// Пример 1 Для к = 1 по Метаданные.РеквизитПроводки() Сообщить(Метаданные.РеквизитПроводки(к).Идентификатор); КонецЦикла;
// Пример 2 СписокРеквизитов = СоздатьОбъект("СписокЗначений"); // реквизиты формы операции СписокРеквизитов.ДобавитьЗначение("ДатаОперации"); СписокРеквизитов.ДобавитьЗначение("НомерДок"); СписокРеквизитов.ДобавитьЗначение("СуммаОперации"); СписокРеквизитов.ДобавитьЗначение("Содержание"); // Дополнительные реквизиты операции Для М1 = 1 По Метаданные.РеквизитОперации() Цикл СписокРеквизитов.ДобавитьЗначение(Метаданные.РеквизитОперации(М1).Идентификатор); КонецЦикла; // Общие реквизиты документов Для М1 = 1 По Метаданные.ОбщийРеквизитДокумента() Цикл СписокРеквизитов.ДобавитьЗначение(Метаданные.ОбщийРеквизитДокумента(М1).Идентификатор); КонецЦикла; СписокРеквизитов.ДобавитьЗначение("НомерПроводки"); СписокРеквизитов.ДобавитьЗначение("ПланСчетов"); СписокРеквизитов.ДобавитьЗначение("СчетДт"); СписокРеквизитов.ДобавитьЗначение("СчетКт"); СписокРеквизитов.ДобавитьЗначение("Субконто"); СписокРеквизитов.ДобавитьЗначение("СубконтоДт"); СписокРеквизитов.ДобавитьЗначение("СубконтоКт"); Для М1 = 1 По Метаданные.МаксимальноеКоличествоСубконто Цикл СписокРеквизитов.ДобавитьЗначение("Субконто" + М1); СписокРеквизитов.ДобавитьЗначение("СубконтоКт" + М1); СписокРеквизитов.ДобавитьЗначение("СубконтоДт" + М1); КонецЦикла; СписокРеквизитов.ДобавитьЗначение("Валюта"); СписокРеквизитов.ДобавитьЗначение("Курс"); СписокРеквизитов.ДобавитьЗначение("Количество"); СписокРеквизитов.ДобавитьЗначение("ВалСумма"); СписокРеквизитов.ДобавитьЗначение("Сумма"); СписокРеквизитов.ДобавитьЗначение("НомерСтроки"); // Дополнительные реквизиты проводки Для М1 = 1 По Метаданные.РеквизитПроводки() Цикл СписокРеквизитов.ДобавитьЗначение(Метаданные.РеквизитПроводки(М1).Идентификатор); КонецЦикла; // журнал операций СписокРеквизитов.ДобавитьЗначение("ВидДок"); СписокРеквизитов.ДобавитьЗначение("ВремяОперации"); // Дополнительные графы журнала операций Для М1 = 1 По Метаданные.ГрафаЖурналаОпераций() Цикл СписокРеквизитов.ДобавитьЗначение(Метаданные.ГрафаЖурналаОпераций(М1).Идентификатор); КонецЦикла;
// Документ - ссылка на документ, Реквизит - название реквизита, например "Контрагент" Функция гРеквизитДокумента(Документ,Реквизит) Экспорт Если Метаданные.Документ(Документ).РеквизитШапки(Реквизит).Выбран()=1 Тогда Возврат Метаданные.Документ(Документ).РеквизитШапки(Реквизит); ИначеЕсли Метаданные.Документ(Документ).РеквизитТабличнойЧасти(Реквизит).Выбран()=1 Тогда Возврат Метаданные.Документ(Документ).РеквизитТабличнойЧасти(Реквизит); ИначеЕсли Метаданные.ОбщийРеквизитДокумента(Реквизит).Выбран()=1 Тогда Возврат Метаданные.ОбщийРеквизитДокумента(Реквизит); КонецЕсли; КонецФункции
Перем ОбъектыКонфы; Перем СтруктКонфы; Процедура ВыгрузитьВWord() Попытка Word = Новый COMОбъект("Word.Application"); Исключение Сообщить("Не удалось открыть Word"); Возврат; КонецПопытки; Word.Documents.Add(); Документ = Word.ActiveDocument(); // Перебор типов метаданных Для Каждого ТипОбъекта Из ОбъектыКонфы Цикл Состояние(ТипОбъекта.Значение); Если Метаданные[ТипОбъекта.Ключ].Количество() > 0 Тогда // Добавляем новый параграф Документ.Paragraphs.Add(); Номер = Документ.Paragraphs.Count(); Документ.Paragraphs(Номер-1).Range().I_nsertAfter(ТипОбъекта.Значение); Документ.Paragraphs(Номер).Range().Style="Заголовок 1"; //Перебираем конктретные объекты Для каждого Объект Из Метаданные[ТипОбъекта.Ключ] Цикл // Добавляем новый параграф Документ.Paragraphs.Add(); Номер = Документ.Paragraphs.Count(); Документ.Paragraphs(Номер-1).Range().I_nsertAfter(Объект.Синоним); Документ.Paragraphs(Номер).Range().Style="Заголовок 2"; // Перебираем параметры метаданных Для каждого Параметр Из СтруктКонфы Цикл Попытка Количество = Объект[Параметр.Ключ].Количество(); Исключение Продолжить; КонецПопытки; Если Количество > 0 Тогда // Добавляем новый параграф Документ.Paragraphs.Add(); Номер = Документ.Paragraphs.Count(); Документ.Paragraphs(Номер-1).Range().I_nsertAfter(Параметр.Значение + " (" + Количество + ")"); Документ.Paragraphs(Номер).Range().Style="Заголовок 3"; // Добавляем новый параграф Документ.Paragraphs.Add(); Номер=Документ.Paragraphs.Count(); // Добавляем новую таблицу Документ.Tables.Add(Документ.Paragraphs(Номер).Range(),Количество+1,4); Счетчик = 1; // Заполняем шапку таблицы Таблица = Документ.Tables(Документ.Tables.Count()); Таблица.Cell(Счетчик,1).Range().I_nsertAfter("Имя"); Таблица.Cell(Счетчик,2).Range().I_nsertAfter("Синоним"); Таблица.Cell(Счетчик,3).Range().I_nsertAfter("Тип"); Таблица.Cell(Счетчик,4).Range().I_nsertAfter("Комментарий"); // Устанавливаем жирный шрифт для шапки таблицы Документ.Range(Таблица.Cell(Счетчик,1).Range.Start,Таблица.Cell(Счетчик,4).Range.End).Font.Bold = Истина; Для каждого Значение Из Объект[Параметр.Ключ] Цикл Счетчик = Счетчик + 1; // Заполняем содержимое таблицы Попытка Таблица.Cell(Счетчик,1).Range().I_nsertAfter(Значение.Имя); Исключение КонецПопытки; Попытка Таблица.Cell(Счетчик,2).Range().I_nsertAfter(Значение.Синоним); Исключение КонецПопытки; Попытка СтрокаТипов = ""; // Выводим все типы Для каждого Тип Из Значение.Тип.Типы() Цикл СтрокаТипов = СтрокаТипов + " " + Строка(Тип); КонецЦикла; Таблица.Cell(Счетчик,3).Range().I_nsertAfter(СтрокаТипов); Исключение КонецПопытки; Попытка Таблица.Cell(Счетчик,4).Range().I_nsertAfter(Значение.Комментарий); Исключение КонецПопытки; КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; КонецЦикла; // Показываем документ Word.Visible = Истина; // Устанавливаем активность документа Word.Activate(); Word = Неопределено; КонецПроцедуры Процедура ВыгрузитьВExcel() Попытка Excel = Новый COMОбъект("Excel.Application"); Исключение Сообщить("Не удалось открыть Excel"); Возврат; КонецПопытки; // Добавляем новый лист Excel.Application.Workbooks.Add(1); Лист = Excel.ActiveSheet; // Задаем имя закладки Лист.Name = "Данные"; НомерСтроки = 0; // Перебор типов метаданных Для Каждого ТипОбъекта Из ОбъектыКонфы Цикл Состояние(ТипОбъекта.Значение); Если Метаданные[ТипОбъекта.Ключ].Количество() > 0 Тогда // Добавляем новую строку НомерСтроки = НомерСтроки + 1; // Устанавливаем текст в ячейку Лист.Cells(НомерСтроки, 1).Value = ТипОбъекта.Значение; // Устанавливаем размер шрифта Лист.Cells(НомерСтроки, 1).Font.Size = 16; // Устанавливаем цвет Лист.Cells(НомерСтроки, 1).Font.ColorIndex = 3; //Перебираем конктретные объекты Для каждого Объект Из Метаданные[ТипОбъекта.Ключ] Цикл // Добавляем новую строку НомерСтроки = НомерСтроки + 1; // Устанавливаем текст в ячейку Лист.Cells(НомерСтроки, 1).Value = Объект.Синоним; // Устанавливаем отступ в 2 символа Лист.Cells(НомерСтроки, 1).I_nsertIndent(2); // Устанавливаем размер шрифта Лист.Cells(НомерСтроки, 1).Font.Size = 12; // Устанавливаем цвет Лист.Cells(НомерСтроки, 1).Font.ColorIndex = 5; // Перебираем параметры метаданных Для каждого Параметр Из СтруктКонфы Цикл Попытка Количество = Объект[Параметр.Ключ].Количество(); Исключение Продолжить; КонецПопытки; Если Количество > 0 Тогда // Добавляем новую строку НомерСтроки = НомерСтроки + 1; Лист.Cells(НомерСтроки, 1).Value = Параметр.Значение + " (" + Количество + ")"; Лист.Cells(НомерСтроки, 1).I_nsertIndent(4); // Устанавливаем жирный шрифт Лист.Cells(НомерСтроки, 1).Font.Bold = Истина; // Устанавливаем цвет Лист.Cells(НомерСтроки, 1).Font.ColorIndex = 16; // Добавляем новую таблицу НомерСтроки = НомерСтроки + 1; Лист.Cells(НомерСтроки, 1).Value = "Имя"; Лист.Cells(НомерСтроки, 2).Value = "Синоним"; Лист.Cells(НомерСтроки, 3).Value = "Тип"; Лист.Cells(НомерСтроки, 4).Value = "Комментарий"; Для Ном = 1 По 4 Цикл // Устанавливаем ширину колонки Лист.Cells(НомерСтроки, Ном).ColumnWidth = 20; Лист.Cells(НомерСтроки, Ном).Font.Bold = Истина; // Очищаем все границы Лист.Cells(НомерСтроки, Ном).Borders(5).LineStyle = -4142; // Устанавливаем левую границу Лист.Cells(НомерСтроки, Ном).Borders(7).LineStyle = 1; // Устанавливаем верхнюю границу Лист.Cells(НомерСтроки, Ном).Borders(8).LineStyle = 1; // Устанавливаем нижнюю границу Лист.Cells(НомерСтроки, Ном).Borders(9).LineStyle = 1; // Устанавливаем правую границу Лист.Cells(НомерСтроки, Ном).Borders(10).LineStyle = 1; // Устанавливаем цвет фона Лист.Cells(НомерСтроки, Ном).Interior.ColorIndex = 34; КонецЦикла; Для каждого Значение Из Объект[Параметр.Ключ] Цикл НомерСтроки = НомерСтроки + 1; // Заполняем содержимое таблицы Попытка Лист.Cells(НомерСтроки, 1).Value = Значение.Имя; Исключение КонецПопытки; Попытка Лист.Cells(НомерСтроки, 2).Value = Значение.Синоним; Исключение КонецПопытки; Попытка СтрокаТипов = ""; // Выводим все типы Для каждого Тип Из Значение.Тип.Типы() Цикл СтрокаТипов = СтрокаТипов + " " + Строка(Тип); КонецЦикла; Лист.Cells(НомерСтроки, 3).Value = СтрокаТипов; Исключение КонецПопытки; Попытка Лист.Cells(НомерСтроки, 4).Value = Значение.Комментарий; Исключение КонецПопытки; Для Ном = 1 По 4 Цикл // Установка границ Лист.Cells(НомерСтроки, Ном).Borders(5).LineStyle = -4142; Лист.Cells(НомерСтроки, Ном).Borders(7).LineStyle = 1; Лист.Cells(НомерСтроки, Ном).Borders(8).LineStyle = 1; Лист.Cells(НомерСтроки, Ном).Borders(9).LineStyle = 1; Лист.Cells(НомерСтроки, Ном).Borders(10).LineStyle = 1; // Устанавливаем выравнивание по левому краю Лист.Cells(НомерСтроки, Ном).VerticalAlignment = -4160; // Устанавливаем перенос слов Лист.Cells(НомерСтроки, Ном).WrapText = Истина; КонецЦикла; КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; КонецЦикла; // Показываем документ Excel.Visible = Истина; Excel = Неопределено; КонецПроцедуры Процедура Сформировать() // Определяем все возможные объекты метаданных ОбъектыКонфы = Новый Структура(); ОбъектыКонфы.Вставить("ОбщиеМодули", "Общие модули"); ОбъектыКонфы.Вставить("ОбщиеФормы", "Общие формы"); ОбъектыКонфы.Вставить("ОбщиеМакеты", "Общие макеты"); ОбъектыКонфы.Вставить("ОбщиеКартинки", "Общие картинки"); ОбъектыКонфы.Вставить("Роли", "Роли"); ОбъектыКонфы.Вставить("Интерфейсы", "Интерфейсы"); ОбъектыКонфы.Вставить("Стили", "Стили"); ОбъектыКонфы.Вставить("Языки", "Языки"); ОбъектыКонфы.Вставить("ПланыОбмена", "Планы обмена"); ОбъектыКонфы.Вставить("Константы", "Константы"); ОбъектыКонфы.Вставить("КритерииОтбора", "Критерии отбора"); ОбъектыКонфы.Вставить("Справочники", "Справочники"); ОбъектыКонфы.Вставить("Документы", "Документы"); ОбъектыКонфы.Вставить("ЖурналыДокументов", "Журналы документов"); ОбъектыКонфы.Вставить("Перечисления", "Перечисления"); ОбъектыКонфы.Вставить("Отчеты", "Отчеты"); ОбъектыКонфы.Вставить("Обработки", "Обработки"); ОбъектыКонфы.Вставить("ПланыВидовХарактеристик", "Планы видов характеристик"); ОбъектыКонфы.Вставить("ПланыСчетов", "Планы счетов"); ОбъектыКонфы.Вставить("ПланыВидовРасчета", "Планы видов расчета"); ОбъектыКонфы.Вставить("РегистрыСведений", "Регистры сведений"); ОбъектыКонфы.Вставить("РегистрыБухгалтерии", "Регистры бухгалтерии"); ОбъектыКонфы.Вставить("РегистрыРасчета", "Регистры расчета"); // Определяем все возможные параметры СтруктКонфы = Новый Структура(); СтруктКонфы.Вставить("Измерения", "Измерения"); СтруктКонфы.Вставить("Ресурсы", "Ресурсы"); СтруктКонфы.Вставить("Реквизиты", "Реквизиты"); СтруктКонфы.Вставить("Формы", "Формы"); СтруктКонфы.Вставить("Макеты", "Макеты"); СтруктКонфы.Вставить("Графы", "Графы"); СтруктКонфы.Вставить("ТабличныеЧасти", "Табличные части"); СтруктКонфы.Вставить("Значения", "Значения"); ВыгрузитьВWord(); // из 1С в Microsoft Word ВыгрузитьВExcel(); // из 1C в Microsoft Excel КонецПроцедуры
Процедура Справочник() Ворд=СоздатьОбъект("Word.Application"); Ворд.DisplayAlerts=0; Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1); Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Код"); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Тип=?(Метаданные.Справочник(СокрЛП(Имя)).ТипКода="Текстовый","Строка","Число"); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип+" ("+СокрЛП(Метаданные.Справочник(СокрЛП(Имя)).ДлинаКода)+")"); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(""); Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1); Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Наименование"); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Строка ("+СокрЛП(Метаданные.Справочник(СокрЛП(Имя)).ДлинаНаименования)+")"); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(""); Для Сч=1 По Метаданные.Справочник(СокрЛП(Имя)).Реквизит() Цикл Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1); Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1); Реквизит=Метаданные.Справочник(СокрЛП(Имя)).Реквизит(Сч); Синоним=Реквизит.Синоним; Если ПустоеЗначение(Синоним)=0 Тогда Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда Синоним=" ("+Синоним+")"; Иначе Синоним=""; КонецЕсли; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Тип=Реквизит.Тип; Если Тип="Строка" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")"; ИначеЕсли Тип="Число" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина); Если ПустоеЗначение(Реквизит.Точность)=0 Тогда Тип=Тип+"."+СокрЛП(Реквизит.Точность); КонецЕсли; Тип=Тип+")"; Иначе Тип=Тип+"."+Реквизит.Вид; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий); КонецЦикла; Предупреждение("Готово",5); КонецПроцедуры Процедура Документ() Ворд=СоздатьОбъект("Word.Application"); Ворд.DisplayAlerts=0; Для Сч=1 По Метаданные.Документ(СокрЛП(Имя)).РеквизитШапки() Цикл Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1); Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Шапка"); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Реквизит=Метаданные.Документ(СокрЛП(Имя)).РеквизитШапки(Сч); Синоним=Реквизит.Синоним; Если ПустоеЗначение(Синоним)=0 Тогда Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда Синоним=" ("+Синоним+")"; Иначе Синоним=""; КонецЕсли; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Тип=Реквизит.Тип; Если Тип="Строка" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")"; ИначеЕсли Тип="Число" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина); Если ПустоеЗначение(Реквизит.Точность)=0 Тогда Тип=Тип+"."+СокрЛП(Реквизит.Точность); КонецЕсли; Тип=Тип+")"; Иначе Тип=Тип+"."+Реквизит.Вид; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий); КонецЦикла; Для Сч=1 По Метаданные.Документ(СокрЛП(Имя)).РеквизитТабличнойЧасти() Цикл Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1); Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Таб. часть"); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Реквизит=Метаданные.Документ(СокрЛП(Имя)).РеквизитТабличнойЧасти(Сч); Синоним=Реквизит.Синоним; Если ПустоеЗначение(Синоним)=0 Тогда Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда Синоним=" ("+Синоним+")"; Иначе Синоним=""; КонецЕсли; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Тип=Реквизит.Тип; Если Тип="Строка" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")"; ИначеЕсли Тип="Число" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина); Если ПустоеЗначение(Реквизит.Точность)=0 Тогда Тип=Тип+"."+СокрЛП(Реквизит.Точность); КонецЕсли; Тип=Тип+")"; Иначе Тип=Тип+"."+Реквизит.Вид; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий); КонецЦикла; Предупреждение("Готово",5); КонецПроцедуры Процедура Общие() Ворд=СоздатьОбъект("Word.Application"); Ворд.DisplayAlerts=0; Для Сч=1 По Метаданные.ОбщийРеквизитДокумента() Цикл Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1); Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Шапка"); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Реквизит=Метаданные.ОбщийРеквизитДокумента(Сч); Синоним=Реквизит.Синоним; Если ПустоеЗначение(Синоним)=0 Тогда Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда Синоним=" ("+Синоним+")"; Иначе Синоним=""; КонецЕсли; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Тип=Реквизит.Тип; Если Тип="Строка" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")"; ИначеЕсли Тип="Число" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина); Если ПустоеЗначение(Реквизит.Точность)=0 Тогда Тип=Тип+"."+СокрЛП(Реквизит.Точность); КонецЕсли; Тип=Тип+")"; Иначе Тип=Тип+"."+Реквизит.Вид; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий); КонецЦикла; Предупреждение("Готово",5); КонецПроцедуры Процедура СтруктураРегистра() Ворд=СоздатьОбъект("Word.Application"); Ворд.DisplayAlerts=0; Для Сч=1 По Метаданные.Регистр(СокрЛП(Имя)).Измерение() Цикл Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1); Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Измерение"); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Реквизит=Метаданные.Регистр(СокрЛП(Имя)).Измерение(Сч); Синоним=Реквизит.Синоним; Если ПустоеЗначение(Синоним)=0 Тогда Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда Синоним=" ("+Синоним+")"; Иначе Синоним=""; КонецЕсли; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Тип=Реквизит.Тип; Если Тип="Строка" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")"; ИначеЕсли Тип="Число" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина); Если ПустоеЗначение(Реквизит.Точность)=0 Тогда Тип=Тип+"."+СокрЛП(Реквизит.Точность); КонецЕсли; Тип=Тип+")"; Иначе Тип=Тип+"."+Реквизит.Вид; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий); КонецЦикла; Для Сч=1 По Метаданные.Регистр(СокрЛП(Имя)).Ресурс() Цикл Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1); Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Ресурс"); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Реквизит=Метаданные.Регистр(СокрЛП(Имя)).Ресурс(Сч); Синоним=Реквизит.Синоним; Если ПустоеЗначение(Синоним)=0 Тогда Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда Синоним=" ("+Синоним+")"; Иначе Синоним=""; КонецЕсли; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Тип=Реквизит.Тип; Если Тип="Строка" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")"; ИначеЕсли Тип="Число" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина); Если ПустоеЗначение(Реквизит.Точность)=0 Тогда Тип=Тип+"."+СокрЛП(Реквизит.Точность); КонецЕсли; Тип=Тип+")"; Иначе Тип=Тип+"."+Реквизит.Вид; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий); КонецЦикла; Для Сч=1 По Метаданные.Регистр(СокрЛП(Имя)).Реквизит() Цикл Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1); Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Реквизит"); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Реквизит=Метаданные.Регистр(СокрЛП(Имя)).Реквизит(Сч); Синоним=Реквизит.Синоним; Если ПустоеЗначение(Синоним)=0 Тогда Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда Синоним=" ("+Синоним+")"; Иначе Синоним=""; КонецЕсли; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Тип=Реквизит.Тип; Если Тип="Строка" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")"; ИначеЕсли Тип="Число" Тогда Тип=Тип+" ("+СокрЛП(Реквизит.Длина); Если ПустоеЗначение(Реквизит.Точность)=0 Тогда Тип=Тип+"."+СокрЛП(Реквизит.Точность); КонецЕсли; Тип=Тип+")"; Иначе Тип=Тип+"."+Реквизит.Вид; КонецЕсли; Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип); Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1); Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий); КонецЦикла; Предупреждение("Готово",5); КонецПроцедуры
//функция устанавливает новое значение реквизита документа или справочника и задаёт вопрос, если новое значение не соответствует предыдущему Функция гЗначение(Ко,Атрибут,Значение) Экспорт Знач1=Ко.ПолучитьАтрибут(Атрибут); Знач2=Значение; //проверка Если Не(ТипЗначенияСтр(Знач1)=ТипЗначенияСтр(Знач2)) Тогда //несоответствие типов Возврат(0); ИначеЕсли Не(ТипЗначенияСтр(Знач2)="Число") И (ПустоеЗначение(Знач2)=1) Тогда //пустое новое значение Возврат(0); КонецЕсли; //реквизит Если Метаданные.Документ(Ко.Вид()).Выбран()=1 Тогда //документ Если Метаданные.Документ(Ко.Вид()).РеквизитШапки(Атрибут).Выбран()=1 Тогда Ж=Метаданные.Документ(Ко.Вид()).РеквизитШапки(Атрибут); Имя=Ж.Представление(); ИначеЕсли Метаданные.Документ(Ко.Вид()).РеквизитТабличнойЧасти(Атрибут).Выбран()=1 Тогда Ж=Метаданные.Документ(Ко.Вид()).РеквизитТабличнойЧасти(Атрибут); Имя=Ж.Представление()+" (строка "+Ко.НомерСтроки+")"; Иначе Ж=Метаданные.ОбщийРеквизитДокумента(Атрибут); Имя=Ж.Представление(); КонецЕсли; ИначеЕсли Метаданные.Справочник(Ко.Вид()).Выбран()=1 Тогда //справочник Ж=Метаданные.Справочник(Ко.Вид()).Реквизит(Атрибут); Имя=Ж.Представление(); Если ПустаяСтрока(Имя)=1 Тогда Имя=Атрибут; КонецЕсли; КонецЕсли; //форматирование Если ТипЗначенияСтр(Знач2)="Строка" Тогда Знач1=СокрЛП(Знач1); Знач2=СокрЛП(Знач2); ИначеЕсли ТипЗначенияСтр(Знач2)="Число" Тогда Знач2=Окр(Знач2,Ж.Точность); КонецЕсли; //проверка Если Знач1=Знач2 Тогда Возврат(0); КонецЕсли; //установка значения Если ПустоеЗначение(Знач1)=0 Тогда Текст= "Атрибут: "+Имя+" | |Старое значение: "+СимволТабуляции+Знач1+" |Новое значение: "+СимволТабуляции+Знач2+" | |Установить новое значение?"; Если Вопрос(Текст,"Да+Нет")="Нет" Тогда Возврат(0) КонецЕсли; КонецЕсли; //значение Ко.УстановитьАтрибут(Атрибут,Знач2); Возврат(1); КонецФункции
//Перебор Основных Реквизитов формы Для Каждого Рек из ЭтаФорма.Метаданные().Реквизиты Цикл Сообщить(рек.Имя+" - "+рек.Синоним+" - "+Строка(рек.Тип)); КонецЦикла; // или так Для Каждого Рек из Метаданные().Реквизиты Цикл Сообщить(рек.Имя+" - "+рек.Синоним+" - "+Строка(рек.Тип)); КонецЦикла; //Реквизиты формы - Надписи, Поля Ввода и т.д //можно и через ЭтаФорма.ЭлементыФормы Для Каждого Рек из ЭлементыФормы Цикл Сообщить(Строка(рек)+" - "+рек.имя); КонецЦикла;
//функция создаёт список реквизитов документа Процедура гСписокРеквизитовДокумента(Список,Документ,ФлагПредставление=0) Экспорт //Шапка Для i=1 По Метаданные.Документ(Документ).РеквизитШапки() Цикл Ж=Метаданные.Документ(Документ).РеквизитШапки(i); Если ФлагПредставление=0 Тогда Представление=Ж.Идентификатор; Иначе Представление=Ж.Представление(); КонецЕсли; Список.ДобавитьЗначение(Ж.Идентификатор,"Ш: "+Представление); КонецЦикла; //Табличная часть Для i=1 По Метаданные.Документ(Документ).РеквизитТабличнойЧасти() Цикл Ж=Метаданные.Документ(Документ).РеквизитТабличнойЧасти(i); Если ФлагПредставление=0 Тогда Представление=Ж.Идентификатор; Иначе Представление=Ж.Представление(); КонецЕсли; Список.ДобавитьЗначение(Ж.Идентификатор,"Т: "+Представление); КонецЦикла; //Общие Для i=1 По Метаданные.ОбщийРеквизитДокумента() Цикл Ж=Метаданные.ОбщийРеквизитДокумента(i); Если ФлагПредставление=0 Тогда Представление=Ж.Идентификатор; Иначе Представление=Ж.Представление(); КонецЕсли; Список.ДобавитьЗначение(Ж.Идентификатор,"О: "+Представление); КонецЦикла; КонецПроцедуры
//ЭлементыФормы.ОбъектПоиска - Поле Выбора на форме СписокВыбора = ЭлементыФормы.ОбъектПоиска.СписокВыбора; Для Каждого Документ Из Метаданные.Документы Цикл //Проверим, есть ли права на просмотр? Да- добавляем, Нет - пропускаем Если ПравоДоступа("Просмотр", Документ) Тогда ИмяДокумента = Документ.Синоним; Если ИмяДокумента = "" Тогда ИмяДокумента = Документ.Имя; КонецЕсли; Структура = Новый Структура; Структура.Вставить("Тип", "Документ"); Структура.Вставить("Объект", Документ); СписокВыбора.Добавить(Структура, ИмяДокумента, ,ЭлементыФормы.КартинкаДокумента.Картинка); КонецЕсли; КонецЦикла;
//Выведем список всех документов в окно сообщений Для Индекс=1 По Метаданные.Документ() Цикл Значение = Метаданные.Документ(Индекс).Идентификатор; Представление = Метаданные.Документ(Индекс).Представление(); Комментарий = Метаданные.Документ(Индекс).Комментарий; Сообщить(значение+" "+Представление+" "+Комментарий); КонецЦикла; // Выведем Список документов, ФормРегистр - Поле со списком на форме ФормРегистр.УдалитьВсе(); Для ъ=1 По Метаданные.Регистр() Цикл ФормРегистр.ДобавитьЗначение(Метаданные.Регистр(ъ).Идентификатор, Метаданные.Регистр(ъ).Представление()); КонецЦикла; Если ФормРегистр.РазмерСписка()>0 Тогда ФормРегистр.ТекущаяСтрока(1); КонецЕсли; //функция создаёт список реквизитов документа Процедура гСписокРеквизитовДокумента(Список,Документ,ФлагПредставление=0) Экспорт //шапка Для i=1 По Метаданные.Документ(Документ).РеквизитШапки() Цикл Ж=Метаданные.Документ(Документ).РеквизитШапки(i); Если ФлагПредставление=0 Тогда Представление=Ж.Идентификатор; Иначе Представление=Ж.Представление(); КонецЕсли; Список.ДобавитьЗначение(Ж.Идентификатор,"Ш: "+Представление); КонецЦикла; //многострочка Для i=1 По Метаданные.Документ(Документ).РеквизитТабличнойЧасти() Цикл Ж=Метаданные.Документ(Документ).РеквизитТабличнойЧасти(i); Если ФлагПредставление=0 Тогда Представление=Ж.Идентификатор; Иначе Представление=Ж.Представление(); КонецЕсли; Список.ДобавитьЗначение(Ж.Идентификатор,"Т: "+Представление); КонецЦикла; //общий Для i=1 По Метаданные.ОбщийРеквизитДокумента() Цикл Ж=Метаданные.ОбщийРеквизитДокумента(i); Если ФлагПредставление=0 Тогда Представление=Ж.Идентификатор; Иначе Представление=Ж.Представление(); КонецЕсли; Список.ДобавитьЗначение(Ж.Идентификатор,"О: "+Представление); КонецЦикла; КонецПроцедуры