|
Прошу помощи в доработке отчета | ☑ | ||
---|---|---|---|---|
0
bezdarOR Enburgski
17.01.20
✎
14:22
|
Прошу помочь в доработке уже готового отчета в конфигурации Менеджмент безопасности (бесплатная конф)
Есть отчет "Журнал учета ключевых документов для обладателя конфиденциальной информации" По умолчанию он не полностью заполнен. Соответственно надо заполнить 3,4, 7,8 колонки Он составлен вручную. В общем модуле есть функции "Функция ПолучитьРабочуюТаблицуКриптоключейДляЖурналовФАПСИ152()" главная функция набирает данные для отчета и формирует рабочую таблицу эта собирает формирует итоговую таблицу и отчет Функция ПолучитьТаблицуКриптоключейДляЖурналаФАПСИ152ОКИ() Еще прошу поделиться учебным материалом по созданию сложных отчетов на основе запросов. Или помогите разобраться в коде этих функций. привожу код функций // РабочаяТаблица - временная структура, в которой накапливаются данные для подготовки // данных в ИтоговойТаблицеОтчета РабочаяТаблица = Новый ТаблицаЗначений; РабочаяТаблица.Колонки.Добавить("КлючеваяИнформация"); РабочаяТаблица.Колонки.Добавить("ДатаВводаВЭксплуатацию"); РабочаяТаблица.Колонки.Добавить("ДатаВыводаИЗЭксплуатации"); РабочаяТаблица.Колонки.Добавить("ДатаПолученияПервогоКД"); РабочаяТаблица.Колонки.Добавить("АктПолученияПервогоКД"); РабочаяТаблица.Колонки.Добавить("АктУничтоженияПоследнегоКД"); РабочаяТаблица.Колонки.Добавить("ТаблицаЭксплуатации"); // РабочаяТаблица.Колонки.Добавить("ИС"); // я тут // РабочаяТаблица.Колонки.Добавить("АктВводаВЭксплуатациюКИ"); // я тиут //ТаблицаЭксплуатации (колонки): // ИС, // АктВводаВэкслпутациюКИ, // АктВыводаизЭкслпутацииКИ РабочаяТаблица.Колонки.Добавить("ТаблицаКлючевыхДокументов"); //ТаблицаКлючевыхДокументов (колонки): // Носитель, // АктПолученияКД, // АктУничтоженияКД, // МассивАктовПередачиКД // [[ 1 - ОПРЕДЕЛЯЕМ СРОКИ ЭКСПЛУАТАЦИИ КИ И ТЕКУЩИЙ СТАТУС]] Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ВводВЭксплуатацию.КлючеваяИнформация КАК КлючеваяИнформация, | МИНИМУМ(ВводВЭксплуатацию.Период) КАК МинВводаВЭксплуатацию, | МАКСИМУМ(ВводВЭксплуатацию.Период) КАК МаксВводаВЭксплуатацию, | ВыводИЗЭксплуатации.МинВыводаИЗЭксплуатации КАК МинВыводаИЗЭксплуатации, | ВыводИЗЭксплуатации.МаксВыводаИЗЭксплуатации КАК МаксВыводаИЗЭксплуатации, | ОстаткиТаб.ЭксплуатируетсяОстаток КАК Эксплуатация, | СтатусЭкземпляраСКЗИ.ЭкземплярСКЗИ.МодельСКЗИ, | СтатусЭкземпляраСКЗИ.ЭкземплярСКЗИ, | АктПолученияКлючевыхДокументов.Серийник |ИЗ | РегистрНакопления.КлючеваяИнформацияСистемы КАК ВводВЭксплуатацию | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | КлючеваяИнформацияСистемы.КлючеваяИнформация КАК КлючеваяИнформация, | МИНИМУМ(КлючеваяИнформацияСистемы.Период) КАК МинВыводаИЗЭксплуатации, | МАКСИМУМ(КлючеваяИнформацияСистемы.Период) КАК МаксВыводаИЗЭксплуатации | ИЗ | РегистрНакопления.КлючеваяИнформацияСистемы КАК КлючеваяИнформацияСистемы | ГДЕ | КлючеваяИнформацияСистемы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | | СГРУППИРОВАТЬ ПО | КлючеваяИнформацияСистемы.КлючеваяИнформация) КАК ВыводИЗЭксплуатации | ПО ВводВЭксплуатацию.КлючеваяИнформация = ВыводИЗЭксплуатации.КлючеваяИнформация | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | Остатки.КлючеваяИнформация КАК КлючеваяИнформация, | Остатки.ЭксплуатируетсяОстаток КАК ЭксплуатируетсяОстаток | ИЗ | РегистрНакопления.КлючеваяИнформацияСистемы.Остатки КАК Остатки) КАК ОстаткиТаб | ПО ВводВЭксплуатацию.КлючеваяИнформация = ОстаткиТаб.КлючеваяИнформация, | РегистрСведений.СтатусЭкземпляраСКЗИ КАК СтатусЭкземпляраСКЗИ, | (ВЫБРАТЬ | КИ.Период КАК Период, | КИ.Регистратор КАК Регистратор, | КИ.НомерСтроки КАК НомерСтроки, | КИ.Активность КАК Активность, | КИ.НаименованиеСКЗИ КАК НаименованиеСКЗИ, | КИ.ОтветственныеЛицо КАК ОтветственныеЛицо, | КИ.ОтветственныеЛица КАК ОтветственныеЛица | ИЗ | РегистрСведений.КИ КАК КИ) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктПолученияКлючевыхДокументов КАК АктПолученияКлючевыхДокументов | ПО ВложенныйЗапрос.Регистратор = АктПолученияКлючевыхДокументов.Ссылка |ГДЕ | ВводВЭксплуатацию.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) | |СГРУППИРОВАТЬ ПО | ВводВЭксплуатацию.КлючеваяИнформация, | ВыводИЗЭксплуатации.МинВыводаИЗЭксплуатации, | ВыводИЗЭксплуатации.МаксВыводаИЗЭксплуатации, | ОстаткиТаб.ЭксплуатируетсяОстаток, | СтатусЭкземпляраСКЗИ.ЭкземплярСКЗИ.МодельСКЗИ, | СтатусЭкземпляраСКЗИ.ЭкземплярСКЗИ, | АктПолученияКлючевыхДокументов.Серийник"; Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Отбор = Новый Структура; Отбор.Вставить("КлючеваяИнформация", Результат.КлючеваяИнформация); СтрокаРабочейТаблицы = Неопределено; НайденныеСтроки = РабочаяТаблица.НайтиСтроки(Отбор); Если 0 = НайденныеСтроки.Количество() Тогда СтрокаРабочейТаблицы = РабочаяТаблица.Добавить(); СтрокаРабочейТаблицы.КлючеваяИнформация = Результат.КлючеваяИнформация; СтрокаРабочейТаблицы.ТаблицаЭксплуатации = Новый ТаблицаЗначений; СтрокаРабочейТаблицы.ТаблицаЭксплуатации.Колонки.Добавить("ИС"); СтрокаРабочейТаблицы.ТаблицаЭксплуатации.Колонки.Добавить("АктВводаВэкслпутациюКИ"); СтрокаРабочейТаблицы.ТаблицаЭксплуатации.Колонки.Добавить("АктВыводаизЭкслпутацииКИ"); СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов = Новый ТаблицаЗначений; СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Колонки.Добавить("Носитель"); СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Колонки.Добавить("АктПолученияКД"); СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Колонки.Добавить("АктУничтоженияКД"); СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Колонки.Добавить("МассивАктовПередачиКД"); ИначеЕсли 1 = НайденныеСтроки.Количество() Тогда СтрокаРабочейТаблицы = НайденныеСтроки[0]; Иначе Сообщить("ВНУТРЕННЯЯ ОШИБКА. Дублирования ключвой информации, при анализе эксплуатации."); СтандартнаяОбработка=Ложь; Возврат неопределено; КонецЕсли; СтрокаРабочейТаблицы.ДатаВводаВЭксплуатацию = Результат.МинВводаВЭксплуатацию; Если NULL = Результат.Эксплуатация Тогда СтрокаРабочейТаблицы.ДатаВыводаИЗЭксплуатации = Результат.МаксВыводаИЗЭксплуатации; КонецЕсли; КонецЦикла; // [[ 2 - ОПРЕДЕЛЯЕМ ключевые документы и все что с ними связано]] Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КлючевыеДокументыЛица.КлючеваяИнформация, | КлючевыеДокументыЛица.Носитель, | КлючевыеДокументыЛица.Лицо, | КлючевыеДокументыЛица.Период КАК Период, | КлючевыеДокументыЛица.Регистратор, | КлючевыеДокументыЛица.ВидДвижения |ИЗ | РегистрНакопления.КлючевыеДокументыЛица КАК КлючевыеДокументыЛица | |УПОРЯДОЧИТЬ ПО | Период"; Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Отбор = Новый Структура; Отбор.Вставить("КлючеваяИнформация", Результат.КлючеваяИнформация); СтрокаРабочейТаблицы = Неопределено; // переменная содержит ссылку на строку соотвествующую криптоключу НайденныеСтроки = РабочаяТаблица.НайтиСтроки(Отбор); // Позиционируемся или добавляем КлючеваяИнформация Если 0 = НайденныеСтроки.Количество() Тогда СтрокаРабочейТаблицы = РабочаяТаблица.Добавить(); СтрокаРабочейТаблицы.КлючеваяИнформация = Результат.КлючеваяИнформация; СтрокаРабочейТаблицы.ТаблицаЭксплуатации = Новый ТаблицаЗначений; СтрокаРабочейТаблицы.ТаблицаЭксплуатации.Колонки.Добавить("ИС"); СтрокаРабочейТаблицы.ТаблицаЭксплуатации.Колонки.Добавить("АктВводаВэкслпутациюКИ"); СтрокаРабочейТаблицы.ТаблицаЭксплуатации.Колонки.Добавить("АктВыводаизЭкслпутацииКИ"); СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов = Новый ТаблицаЗначений; СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Колонки.Добавить("Носитель"); СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Колонки.Добавить("АктПолученияКД"); СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Колонки.Добавить("АктУничтоженияКД"); СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Колонки.Добавить("МассивАктовПередачиКД"); // начало для удаления СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Колонки.Добавить("АктПоступленияСКЗИ"); СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Колонки.Добавить("АктВводаСКЗИвЭксплуатацию"); // конец для удаления ИначеЕсли 1 = НайденныеСтроки.Количество() Тогда СтрокаРабочейТаблицы = НайденныеСтроки[0]; Иначе Сообщить("ВНУТРЕННЯЯ ОШИБКА. Дублирование ключевой информации."); СтандартнаяОбработка=Ложь; Возврат Неопределено; КонецЕсли; Отбор = Новый Структура; Отбор.Вставить("Носитель", Результат.Носитель); НайденныеСтроки = СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.НайтиСтроки(Отбор); СтрокаКлючеовгоДокумента = Неопределено; // Добавляем первую жизнь КД Если 0 = НайденныеСтроки.Количество() Тогда Если Тип("ДокументСсылка.АктПолученияКлючевыхДокументов") = ТипЗнч(Результат.Регистратор) Тогда СтрокаКлючеовгоДокумента = СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Добавить(); СтрокаКлючеовгоДокумента.Носитель = Результат.Носитель; СтрокаКлючеовгоДокумента.АктПолученияКД = Результат.Регистратор; СтрокаКлючеовгоДокумента.АктУничтоженияКД = Неопределено; СтрокаКлючеовгоДокумента.МассивАктовПередачиКД = Новый Массив; Если Неопределено = СтрокаРабочейТаблицы.АктПолученияПервогоКД Тогда СтрокаРабочейТаблицы.АктПолученияПервогоКД = Результат.Регистратор; СтрокаРабочейТаблицы.ДатаПолученияПервогоКД = Результат.Регистратор.Дата; КонецЕсли; Продолжить; Иначе Сообщить("ВНУТРЕННЯЯ ОШИБКА. Первым документом ЖЦ КД (" + СтрокаРабочейТаблицы.КлючеваяИнформация + ", " + СтрокаКлючеовгоДокумента.Носитель + ") должен быть Акт получения КД, а вместо этого - " + Результат.Регистратор); СтандартнаяОбработка=Ложь; Возврат Неопределено; КонецЕсли; // Ситуация в которых ужеть есть возможно несколько жизней у одного КД // и нужно найти правильную (или создать новую) для анализируемого документа Иначе Для каждого ЖизньКД из НайденныеСтроки Цикл ДатаДокумента = Результат.Регистратор.Дата; Если ДатаДокумента >= ЖизньКД.АктПолученияКД.Дата Тогда // Если жизнь уже завершилась, првоеряем вхождение в ее диапозон Если Неопределено <> ЖизньКД.АктУничтоженияКД Тогда Если ДатаДокумента >= ЖизньКД.АктУничтоженияКД.Дата Тогда Продолжить; КонецЕсли; Иначе СтрокаКлючеовгоДокумента = ЖизньКД; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; Если Тип("ДокументСсылка.АктПолученияКлючевыхДокументов") = ТипЗнч(Результат.Регистратор) Тогда Если Неопределено = СтрокаКлючеовгоДокумента Тогда СтрокаКлючеовгоДокумента = СтрокаРабочейТаблицы.ТаблицаКлючевыхДокументов.Добавить(); СтрокаКлючеовгоДокумента.Носитель = Результат.Носитель; СтрокаКлючеовгоДокумента.АктПолученияКД = Результат.Регистратор; СтрокаКлючеовгоДокумента.АктУничтоженияКД = Неопределено; СтрокаКлючеовгоДокумента.МассивАктовПередачиКД = Новый Массив; СтрокаРабочейТаблицы.АктУничтоженияПоследнегоКД = Неопределено; Иначе Сообщить("ВНУТРЕННЯЯ ОШИБКА. Дублирование анализа акт получения КД - " + Результат.Регистратор); СтандартнаяОбработка=Ложь; Возврат Неопределено; КонецЕсли; КонецЕсли; Если Тип("ДокументСсылка.АктПередачиКлючевыхДокументов") = ТипЗнч(Результат.Регистратор) и ВидДвиженияНакопления.Приход = Результат.ВидДвижения Тогда СтрокаКлючеовгоДокумента.МассивАктовПередачиКД.Добавить(Результат.Регистратор); КонецЕсли; Если Тип("ДокументСсылка.АктУничтоженияКлючевыхДокументов") = ТипЗнч(Результат.Регистратор) Тогда СтрокаКлючеовгоДокумента.АктУничтоженияКД = Результат.Регистратор; КонецЕсли; КонецЦикла; //////////////!!!!!!!!!! // Определим последний АктУничтоженияКД для КИ Для каждого КИ из РабочаяТаблица Цикл КИ.АктУничтоженияПоследнегоКД=Неопределено; Для каждого КД из КИ.ТаблицаКлючевыхДокументов Цикл Если Неопределено = КД.АктУничтоженияКД Тогда КИ.АктУничтоженияПоследнегоКД=Неопределено; Прервать; Иначе КИ.АктУничтоженияПоследнегоКД = КД.АктУничтоженияКД; КонецЕсли; КонецЦикла; КонецЦикла; // [[ 3 - ОПРЕДЕЛЯЕМ ПЕРЕЧЕНЬ АКТОВ ЭКСПЛУАТАЦИИ]] Запрос.Текст = "ВЫБРАТЬ | КлючеваяИнформацияСистемы.Период КАК Период, | КлючеваяИнформацияСистемы.Регистратор, | КлючеваяИнформацияСистемы.ВидДвижения, | КлючеваяИнформацияСистемы.КлючеваяИнформация, | КлючеваяИнформацияСистемы.ИС, | КлючеваяИнформацияСистемы.Эксплуатируется |ИЗ | РегистрНакопления.КлючеваяИнформацияСистемы КАК КлючеваяИнформацияСистемы | |УПОРЯДОЧИТЬ ПО | Период"; Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Отбор = Новый Структура; Отбор.Вставить("КлючеваяИнформация", Результат.КлючеваяИнформация); // позиционируемся на строку в рабочей таблице СтрокаРабочейТаблицы = Неопределено; НайденныеСтроки = РабочаяТаблица.НайтиСтроки(Отбор); Если 1 = НайденныеСтроки.Количество() Тогда СтрокаРабочейТаблицы = НайденныеСтроки[0]; Иначе Сообщить("ВНУТРЕННЯЯ ОШИБКА. При анализе этапов экслпутации не найдены строки рабочей таблицы для " + Результат.КлючеваяИнформация); СтандартнаяОбработка=Ложь; Возврат Неопределено; КонецЕсли; СтрокаЭтапаЭксплуатации = Неопределено; Если Тип("ДокументСсылка.АктВводаВЭксплуатациюКлючевойИнформации") = ТипЗнч(Результат.Регистратор) Тогда СтрокаЭтапаЭксплуатации = СтрокаРабочейТаблицы.ТаблицаЭксплуатации.Добавить(); СтрокаЭтапаЭксплуатации.ИС = Результат.ИС; СтрокаЭтапаЭксплуатации.АктВводаВэкслпутациюКИ = Результат.Регистратор; СтрокаЭтапаЭксплуатации.АктВыводаизЭкслпутацииКИ = Неопределено; Продолжить; КонецЕсли; Если Тип("ДокументСсылка.АктВыводаИзЭксплуатацииКлючевойИнформации") = ТипЗнч(Результат.Регистратор) Тогда Отбор = Новый Структура; Отбор.Вставить("ИС", Результат.ИС); НайденныеСтроки = СтрокаРабочейТаблицы.ТаблицаЭксплуатации.НайтиСтроки(Отбор); Для i = 0 по НайденныеСтроки.ВГраница() Цикл ЭтапЭксплуатации = НайденныеСтроки[i]; Если Неопределено = ЭтапЭксплуатации.АктВыводаизЭкслпутацииКИ Тогда ЭтапЭксплуатации.АктВыводаизЭкслпутацииКИ = Результат.Регистратор; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Возврат РабочаяТаблица; КонецФункции //ПолучитьРабочуюТаблицуКриптоключейДляЖурналовФАПСИ152 и вторая функция чуть поменьше Функция ПолучитьТаблицуКриптоключейДляЖурналаФАПСИ152ОКИ() экспорт // я тут // ИтоговаяТаблицаОтчета - будет содержать конечные данные, передаваемые в отчет ИтоговаяТаблицаОтчета = Новый ТаблицаЗначений; ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка1"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка2"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка3"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка4"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка5"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка6"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка7"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка8"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка9"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка10"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка11"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка12"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка13"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка14"); ИтоговаяТаблицаОтчета.Колонки.Добавить("Колонка15"); РабочаяТаблица = ПолучитьРабочуюТаблицуКриптоключейДляЖурналовФАПСИ152();// я тут тоже добавли // Cортируем рабочую таблицу по датам создания первого ключевого документа РабочаяТаблица.Сортировать("ДатаПолученияПервогоКД Возр"); /////////////////////////////// // // Заполнение итоговой таблицы НомерПоПорядку = 0; Для каждого СтрокаРабочейТаблицы из РабочаяТаблица Цикл НомерПоПорядку = НомерПоПорядку + 1; СтрокаКриптоключа = ИтоговаяТаблицаОтчета.Добавить(); СтрокаКриптоключа.Колонка1 = НомерПоПорядку; СтрокаКриптоключа.Колонка2 = "Ключевая информация:" + Символы.ПС + СтрокаРабочейТаблицы.КлючеваяИнформация; СтрокаКриптоключа.Колонка3 = СтрокаРабочейТаблицы.серийник; СтрокаКриптоключа.Колонка5 = "" + СтрокаРабочейТаблицы.АктПолученияПервогоКД.ОтветственноеЛицо + ", " + СтрокаРабочейТаблицы.АктПолученияПервогоКД.ОтветственноеЛицо.МестоРаботы; СтрокаКриптоключа.Колонка6 = "Акту получения ключевых документов № " + СтрокаРабочейТаблицы.АктПолученияПервогоКД.Номер + " от " + Формат(СтрокаРабочейТаблицы.АктПолученияПервогоКД.Дата,"ДФ=dd.MM.yyyy"); ПодНомерПоПорядку = -1; СтрокаЭтапаЭксплуатации = СтрокаКриптоключа; Для i=0 по СтрокаРабочейТаблицы.ТаблицаЭксплуатации.Количество()-1 Цикл ЭтапаЭксплуатации = СтрокаРабочейТаблицы.ТаблицаЭксплуатации[i]; ПодНомерПоПорядку = i; Если 0 = i Тогда СтрокаЭтапаЭксплуатации = СтрокаКриптоключа; Иначе СтрокаЭтапаЭксплуатации = ИтоговаяТаблицаОтчета.Добавить(); СтрокаЭтапаЭксплуатации.Колонка1 = "" + НомерПоПорядку + "." + ПодНомерПоПорядку; КонецЕсли; СтрокаЭтапаЭксплуатации.Колонка9 = "" + ЭтапаЭксплуатации.АктВводаВэкслпутациюКИ.ОтветственноеЛицо + ", " + ЭтапаЭксплуатации.АктВводаВэкслпутациюКИ.ОтветственноеЛицо.МестоРаботы; СтрокаЭтапаЭксплуатации.Колонка10 = "Акт ввода в эксплуатацию ключевой информации № " + ЭтапаЭксплуатации.АктВводаВэкслпутациюКИ.Номер + " от " + Формат(ЭтапаЭксплуатации.АктВводаВэкслпутациюКИ.Дата,"ДФ=dd.MM.yyyy"); СтрокаЭтапаЭксплуатации.Колонка11 = ЭтапаЭксплуатации.АктВводаВэкслпутациюКИ.ИС; Если Неопределено <> ЭтапаЭксплуатации.АктВыводаизЭкслпутацииКИ Тогда СтрокаЭтапаЭксплуатации.Колонка12 = Формат(ЭтапаЭксплуатации.АктВыводаизЭкслпутацииКИ.Дата,"ДФ=dd.MM.yyyy"); СтрокаЭтапаЭксплуатации.Колонка13 = "" + ЭтапаЭксплуатации.АктВыводаизЭкслпутацииКИ.ОтветственноеЛицо + ", " + ЭтапаЭксплуатации.АктВыводаизЭкслпутацииКИ.ОтветственноеЛицо.МестоРаботы; СтрокаЭтапаЭксплуатации.Колонка14 = "Акт вывода из эксплуатации ключевой информации № " + ЭтапаЭксплуатации.АктВыводаизЭкслпутацииКИ.Номер + " от " + Формат(ЭтапаЭксплуатации.АктВыводаизЭкслпутацииКИ.Дата,"ДФ=dd.MM.yyyy"); КонецЕсли; КонецЦикла; Если Неопределено <> СтрокаРабочейТаблицы.АктУничтоженияПоследнегоКД Тогда Если -1 <> ПодНомерПоПорядку Тогда ПодНомерПоПорядку = ПодНомерПоПорядку + 1; СтрокаЭтапаЭксплуатации = ИтоговаяТаблицаОтчета.Добавить(); СтрокаЭтапаЭксплуатации.Колонка1 = "" + НомерПоПорядку + "." + ПодНомерПоПорядку; КонецЕсли; СтрокаЭтапаЭксплуатации.Колонка12 = Формат(СтрокаРабочейТаблицы.АктУничтоженияПоследнегоКД.Дата,"ДФ=dd.MM.yyyy"); СтрокаЭтапаЭксплуатации.Колонка13 = "" + СтрокаРабочейТаблицы.АктУничтоженияПоследнегоКД.ОтветственноеЛицо + ", " + СтрокаРабочейТаблицы.АктУничтоженияПоследнегоКД.ОтветственноеЛицо.МестоРаботы; СтрокаЭтапаЭксплуатации.Колонка14 = "Акт уничтожения ключевых документов № " + СтрокаРабочейТаблицы.АктУничтоженияПоследнегоКД.Номер + " от " + Формат(СтрокаРабочейТаблицы.АктУничтоженияПоследнегоКД.Дата,"ДФ=dd.MM.yyyy"); КонецЕсли; КонецЦикла; Возврат ИтоговаяТаблицаОтчета; КонецФункции //ПолучитьТаблицуКриптоключейДляЖурналаФАПСИ152ОКИ |
|||
1
Asmody
17.01.20
✎
14:32
|
хорошо
|
|||
2
Масянька
17.01.20
✎
14:34
|
(1) Что "хорошо"?
|
|||
3
vicof
17.01.20
✎
14:35
|
(2) плохо
|
|||
4
Uzyf
17.01.20
✎
14:35
|
(2) тут уже все хорошо )
|
|||
5
Масянька
17.01.20
✎
14:36
|
(3) (4) Штирлиц ничего не понял, но решил не палится.
|
|||
6
vicof
17.01.20
✎
14:37
|
(5) йайа дастиш фантастиш
|
|||
7
Uzyf
17.01.20
✎
14:37
|
(5) давайте без этих ваших фашистов
|
|||
8
Uzyf
17.01.20
✎
14:38
|
||||
9
Масянька
17.01.20
✎
14:40
|
(7) Нет уж.
В пятницу, почти в половину третьего вечера вываливать процедуру в 500 строк... Только к Мюллеру... В застенки... |
|||
10
lopus
17.01.20
✎
14:44
|
Вроде 3 колонка же заполняется
СтрокаКриптоключа.Колонка3 = СтрокаРабочейТаблицы.серийник; |
|||
11
Uzyf
17.01.20
✎
14:46
|
(10) да это он сам поди добавил
|
|||
12
unenu
17.01.20
✎
14:48
|
я протестил колесико мышки - все работает.
|
|||
13
VladZ
17.01.20
✎
14:48
|
(9) А Мюллер тут при чем? Думаешь он хочет работать в пятницу после обеда?
Предлагаю кардинально решать проблему: расстрелять !!! |
|||
14
Масянька
17.01.20
✎
14:50
|
(13) Заметьте: не я это предложил (С)
Уточнение: Мюллера, Штирлица, автора? |
|||
15
VladZ
17.01.20
✎
14:50
|
+13. Вот даже есть пункт в правилах: 5. Не засоряйте форум бессмысленными сообщениями (вандализм).
Все же согласятся, что это вандализм? |
|||
16
bezdarOR Enburgski
17.01.20
✎
14:50
|
А я не нашел спойлеры на данном форуме.
|
|||
17
VladZ
17.01.20
✎
14:51
|
Скиньте уже автору глобальник ЗИКа. Пусть разбирается.
|
|||
18
bezdarOR Enburgski
17.01.20
✎
14:59
|
ТО что в пятницу. Ну извините
|
|||
19
Asmody
17.01.20
✎
16:53
|
(2) хорошо, что это не уменя
|
|||
20
VladZ
17.01.20
✎
16:59
|
Анек в тему:
Однажды Максим Горький и Владислав Ходасевич прогуливались по Кронверкскому проспекту. Вдруг на шляпу Горького упала, отделившаяся от пролетающей над ними вороны, фекалия. -Хорошо- сказал Горький снимая шляпу и стряхивая с неё неожиданность. -Что хорошо?- не понял Владислав. -Хорошо, что коровы не летают! |
|||
21
Мимохожий Однако
17.01.20
✎
18:27
|
(0) "Маловато будет!"©м/ф "Падал прошлогодний снег"
|
|||
22
JeHer
18.01.20
✎
07:24
|
(0) Если еще не обиделся, чем надо заполнять-то?
|
|||
23
bezdarOR Enburgski
20.01.20
✎
07:27
|
JeHer да какие обиды. Сам точно таким же занимался.)
А заполнять надо в отчете Серийные номера, Номера экземпляров, ФИО пользователя СКЗИ, Дата получения. Вроде бы просто, но когда я пытаюсь прописать эти поля из документов (различные акты и прочее) то выдает ошибку "Поле не найдено" Изменяешь запрос, (добавляешь эти самые АКты, чтобы из них он выбирал эти поля) но опять "Поле не найдено". Ну и выходит, что выход, делать внешний отчет. Но мне интересно, что я не так делаю? |
|||
24
catena
20.01.20
✎
08:34
|
>>Если проблема с конкретным кодом, приведите листинг программы, но придерживайтесь принципа разумной достаточности – ошибку проще найти в небольшом листинге, чем изучать весь модуль.<<
(23)А вы не показали основное, чтобы было понятно, что там не так. "Тут я уже добавил" - нам не видно |
|||
25
bezdarOR Enburgski
20.01.20
✎
08:54
|
"Я добавил" это мои пометки, чтобы потом я мог удалить свой код.
Весь код который я вставил сюда оригинальный. Собсно проблема не в коде, а в том, что я не знаю как добавить дополнительные поля в отчет. Если прописывать эти поля в функцию ПолучитьТаблицуКриптоключейДляЖурналаФАПСИ152ОКИ а именно в колонка3 -// СтрокаКриптоключа.Колонка1 = НомерПоПорядку; СтрокаКриптоключа.Колонка2 = "Ключевая информация:" + Символы.ПС + СтрокаРабочейТаблицы.КлючеваяИнформация; СтрокаКриптоключа.Колонка3 = СтрокаРабочейТаблицы.серийник; (Вот это уже мое, не удалил извините) СтрокаКриптоключа.Колонка5 = "" + СтрокаРабочейТаблицы.АктПолученияПервогоКД.ОтветственноеЛицо + ", " + СтрокаРабочейТаблицы.АктПолученияПервогоКД.ОтветственноеЛицо.МестоРаботы; -// То пишет что "поле не найдено". Если менять сам запрос, который находится в функции ПолучитьРабочуюТаблицуКриптоключейДляЖурналовФАПСИ152 он работает, но не отображает информацию в полях, и все равно выдает ошибку поле не найдено. Поэтому главный для меня вопрос. Как добавить эти поля (Серийный номер СКЗИ, Номера Экземпляров КД, ФИО пользователя СКЗИ, Дата получения)? Эти данные есть в АктахПолученияСКЗИ (это документ). |
|||
26
bezdarOR Enburgski
20.01.20
✎
08:58
|
Как добавить эти поля (Серийный номер СКЗИ, Номера Экземпляров КД, ФИО пользователя СКЗИ, Дата получения) в отчет "ЖурналУчетаКлючевыхДокументовФАПСИ152ОКИ"
|
|||
27
bezdarOR Enburgski
20.01.20
✎
09:11
|
И еще один момент Отчет этот не на СКД, а "ручной" в модуле прописан.
|
|||
28
Масянька
20.01.20
✎
09:14
|
(26) Вестимо: выбрать из актов,заполнять в выборке.
|
|||
29
bezdarOR Enburgski
20.01.20
✎
09:18
|
Масянька Все равно выдает ошибку поле не найдено.
Хотя может я чет не правильно делаю. Я встаю на основной запрос в функции ПолучитьРабочуюТаблицуКриптоключейДляЖурналовФАПСИ152, открываю конструктор запросов, добавляю в набор данных, акт получени скзи и выбираю поле Серийный номер и дату получения. |
|||
30
bezdarOR Enburgski
20.01.20
✎
09:18
|
Масянька и если можно.
Можете подробно расписать как выбрать? |
|||
31
Масянька
20.01.20
✎
09:20
|
(29) Там (насколько видно в (0)) три запроса.
|
|||
32
Масянька
20.01.20
✎
09:20
|
(30) Не-а.
|
|||
33
bezdarOR Enburgski
20.01.20
✎
09:37
|
Основной запрос который собирает рабочую таблицу вот
// [[ 1 - ОПРЕДЕЛЯЕМ СРОКИ ЭКСПЛУАТАЦИИ КИ И ТЕКУЩИЙ СТАТУС]] Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ВводВЭксплуатацию.КлючеваяИнформация КАК КлючеваяИнформация, | МИНИМУМ(ВводВЭксплуатацию.Период) КАК МинВводаВЭксплуатацию, | МАКСИМУМ(ВводВЭксплуатацию.Период) КАК МаксВводаВЭксплуатацию, | ВыводИЗЭксплуатации.МинВыводаИЗЭксплуатации КАК МинВыводаИЗЭксплуатации, | ВыводИЗЭксплуатации.МаксВыводаИЗЭксплуатации КАК МаксВыводаИЗЭксплуатации, | ОстаткиТаб.ЭксплуатируетсяОстаток КАК Эксплуатация, | СтатусЭкземпляраСКЗИ.ЭкземплярСКЗИ.МодельСКЗИ, | СтатусЭкземпляраСКЗИ.ЭкземплярСКЗИ, | АктПолученияКлючевыхДокументов.Серийник |ИЗ | РегистрНакопления.КлючеваяИнформацияСистемы КАК ВводВЭксплуатацию | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | КлючеваяИнформацияСистемы.КлючеваяИнформация КАК КлючеваяИнформация, | МИНИМУМ(КлючеваяИнформацияСистемы.Период) КАК МинВыводаИЗЭксплуатации, | МАКСИМУМ(КлючеваяИнформацияСистемы.Период) КАК МаксВыводаИЗЭксплуатации | ИЗ | РегистрНакопления.КлючеваяИнформацияСистемы КАК КлючеваяИнформацияСистемы | ГДЕ | КлючеваяИнформацияСистемы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | | СГРУППИРОВАТЬ ПО | КлючеваяИнформацияСистемы.КлючеваяИнформация) КАК ВыводИЗЭксплуатации | ПО ВводВЭксплуатацию.КлючеваяИнформация = ВыводИЗЭксплуатации.КлючеваяИнформация | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | Остатки.КлючеваяИнформация КАК КлючеваяИнформация, | Остатки.ЭксплуатируетсяОстаток КАК ЭксплуатируетсяОстаток | ИЗ | РегистрНакопления.КлючеваяИнформацияСистемы.Остатки КАК Остатки) КАК ОстаткиТаб | ПО ВводВЭксплуатацию.КлючеваяИнформация = ОстаткиТаб.КлючеваяИнформация, | РегистрСведений.СтатусЭкземпляраСКЗИ КАК СтатусЭкземпляраСКЗИ, | (ВЫБРАТЬ | КИ.Период КАК Период, | КИ.Регистратор КАК Регистратор, | КИ.НомерСтроки КАК НомерСтроки, | КИ.Активность КАК Активность, | КИ.НаименованиеСКЗИ КАК НаименованиеСКЗИ, | КИ.ОтветственныеЛицо КАК ОтветственныеЛицо, | КИ.ОтветственныеЛица КАК ОтветственныеЛица | ИЗ | РегистрСведений.КИ КАК КИ) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктПолученияКлючевыхДокументов КАК АктПолученияКлючевыхДокументов | ПО ВложенныйЗапрос.Регистратор = АктПолученияКлючевыхДокументов.Ссылка |ГДЕ | ВводВЭксплуатацию.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) | |СГРУППИРОВАТЬ ПО | ВводВЭксплуатацию.КлючеваяИнформация, | ВыводИЗЭксплуатации.МинВыводаИЗЭксплуатации, | ВыводИЗЭксплуатации.МаксВыводаИЗЭксплуатации, | ОстаткиТаб.ЭксплуатируетсяОстаток, | СтатусЭкземпляраСКЗИ.ЭкземплярСКЗИ.МодельСКЗИ, | СтатусЭкземпляраСКЗИ.ЭкземплярСКЗИ, | АктПолученияКлючевыхДокументов.Серийник"; |
|||
34
catena
20.01.20
✎
11:10
|
(33)Ты видишь, что оно возвращает РабочаяТаблица? Вот и смотри, чтобы твои реквизиты попали в РабочаяТаблица. Включай отладчик и разбирайся построчно.
|
|||
35
bezdarOR Enburgski
20.01.20
✎
12:35
|
Catena я совсем забыл про отладчик. Спасибо Вам за совет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |