|
Помогоите исправить печатную форму в КА 1.1 (ЕстьРеквизитДокумента) | ☑ | ||
---|---|---|---|---|
0
snap870
05.03.14
✎
15:33
|
Доброго времени суток. Сейчас ушли от УТ 10.3 в пользу КА 1.1. Подгружаю печатную форму, выдается ошибка
Метод объекта не обнаружен (ЕстьРеквизитДокумента) Хотя вроде функция то стандартная, в КА она актуальна? если нет то как заменить лучше? Код сам писал не я - достался в наследство. #Если Клиент Тогда Перем мТабДок; Перем мКоличествоГруппировок; Перем мКоличествоДопПолейПосле; Перем мКоличествоДопПолейДо; Перем мКоличествоДопПолейВместе; Перем мСоответствиеГруппировок; Перем мСоответствиеДопПолейДо; Перем мСоответствиеДопПолейПосле; Перем мСоответствиеДопПолейВместе; Перем мСписокПоложенийДляПечати Экспорт; Перем мСписокНачало; Перем мСписокНоменклатура; Перем мСписокДопПоле; Перем мСписокГруппаНачало; Перем мСписокГруппаНоменклатура; Перем мСписокГруппаДопПоле; Перем мСпециальныеПоля; Перем мИмяРеквизитаСклад; Перем мСклад; Перем мИмяМакета Экспорт; Перем мМакет; Перем мИнициализироватьНастройкиПриОткрытии Экспорт; Перем мТекущаяНастройка Экспорт; Перем мНомерСтроки; Перем мИзмеренияСтроки; Перем мЕдиницаИзмеренияВеса; Перем мПоляСПредставлениями; Перем мВесВведенНеДляВсехТоваров; Перем мИтогВес; Функция Печать() Экспорт НаПринтер = Ложь; //Обработки.ПечатьРаскладкиНоменклатурыПоМестамХранения.Создать().НапечататьИзДокумента(СсылкаНаОбъект.Ссылка, , , НаПринтер); НапечататьИзДокумента(СсылкаНаОбъект.Ссылка, , , НаПринтер); Возврат Неопределено; КонецФункции // ПечатьБланк() // Формирует структуру для сохранения настроек отчета // Процедура СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками) Экспорт СтруктураСНастройками = Новый Структура; СтруктураСНастройками.Вставить("НастройкиПостроителя" , ПостроительОтчета.ПолучитьНастройки()); СтруктураСНастройками.Вставить("ТаблицаНастройкиПолейПечать" , ТаблицаНастройкиПолейПечать); СтруктураСНастройками.Вставить("СписокСкладов" , СписокСкладов); СтруктураСНастройками.Вставить("ВыводитьЗаголовок" , ВыводитьЗаголовок); СтруктураСНастройками.Вставить("ПоказыватьФорму" , ПоказыватьФорму); СтруктураСНастройками.Вставить("ИспользоватьСвойства" , ИспользоватьСвойства); СтруктураСНастройками.Вставить("КоличествоУровнейМестХранения" , 1); // СтруктураСНастройками.Вставить("КоличествоУровнейМестХранения" , КоличествоУровнейМестХранения); СтруктураСНастройками.Вставить("ПредставленияПриоритетовМестХранения", ПредставленияПриоритетовМестХранения); КонецПроцедуры // СформироватьСтруктуруДляСохраненияНастроек() // Процедура осуществляет вызов формирования печатной формы из документа. // // Параметры: // // Процедура НапечататьИзДокумента(Док, ИмяМакета = Неопределено, ПечататьТолькоНеотсканированные = Неопределено, НаПринтер = Ложь) Экспорт КоличествоУровнейМестХранения = 1; Если ИмяМакета <> Неопределено Тогда мИмяМакета = ИмяМакета; КонецЕсли; Если ПечататьТолькоНеотсканированные <> Неопределено Тогда ТолькоНеотсканированныйТовар = ПечататьТолькоНеотсканированные; КонецЕсли; ВидДокументов = Док.Метаданные().Имя; Документ = Док; ВосстановитьНастройкиПриОткрытии(); Если ПоказыватьФорму Тогда мИнициализироватьНастройкиПриОткрытии = Ложь; ПолучитьФорму().Открыть(); Иначе ПечатьНовая(НаПринтер); КонецЕсли; КонецПроцедуры // НапечататьИзДокумента() // Процедура открывает форму настройки из документа. // // Параметры: // ТекДок - Ссылка на документ, из которого открыта форма. // Процедура ОткрытьФормуНастройкиИзДокумента(Док) Экспорт ВидДокументов = Док.Метаданные().Имя; Документ = Док; ВосстановитьНастройкиПриОткрытии(); мИнициализироватьНастройкиПриОткрытии = Ложь; ПолучитьФорму().Открыть(); КонецПроцедуры // ОткрытьФормуНастройкиИзДокумента() // Функция выводит поле в шапку отчета. Возвращает количество выведенных полей. // // Параметры: // ДопПоле - поле, которое нужно вывести. // РезультатЗапроса - результат запроса. // Секция - выводимая секция. // // Возвращаемое значение: // Число - количество выведенных полей. // Функция ВывестиПолеВШапку(ДопПоле, РезультатЗапроса, Знач Секция) Экспорт КоличествоПолей = 0; Если мСпециальныеПоля[ДопПоле.Имя] = 0 Тогда // "МестоХранения" Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Приоритет", "Все"); Пока Выборка.Следующий() Цикл СтрокаПредставленияПриоритета = ПредставленияПриоритетовМестХранения.Найти(Выборка.Приоритет, "Приоритет"); Если СтрокаПредставленияПриоритета = Неопределено Тогда НазваниеКолонки = ДопПоле.Псевдоним + ?(Выборка.Количество() = 1, "", " " + (Выборка.Приоритет)); Иначе НазваниеКолонки = СтрокаПредставленияПриоритета.Псевдоним; КонецЕсли; Секция.Параметры.ДопПоле = НазваниеКолонки; мТабДок.Присоединить(Секция); КоличествоПолей = КоличествоПолей + 1; КонецЦикла; ИначеЕсли мСпециальныеПоля[ДопПоле.Имя] = 1 Тогда // "Остаток" Секция = мМакет.ПолучитьОбласть("Шапка|ДопПолеОстаток"); Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад", "Все"); Пока Выборка.Следующий() Цикл НазваниеКолонки = СокрЛП(Выборка.СкладПредставление); Если Не ПустаяСтрока(ДопПоле.Псевдоним) Тогда НазваниеКолонки = НазваниеКолонки + Символы.ПС + ДопПоле.Псевдоним; КонецЕсли; Секция.Параметры.ДопПоле = НазваниеКолонки; мТабДок.Присоединить(Секция); КоличествоПолей = КоличествоПолей + 1; КонецЦикла; Иначе Секция.Параметры.ДопПоле = ДопПоле.Псевдоним; мТабДок.Присоединить(Секция); КоличествоПолей = КоличествоПолей + 1; КонецЕсли; Возврат КоличествоПолей; КонецФункции // ВывестиПолеВШапку() // Процедура выводит поле в отчет. // // Параметры: // ДопПоле - поле, которое нужно вывести. // РезультатЗапроса - результат запроса. // Секция - выводимая секция. // Процедура ВывестиПолеВОтчет(ДопПоле, Выборка, Знач Секция) Экспорт Если мСпециальныеПоля[ДопПоле] = 0 Тогда // "МестоХранения" ВыборкаДопПоле = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Приоритет", "Все"); Пока ВыборкаДопПоле.Следующий() Цикл Секция.Параметры.ЗначениеДопПоля = ВыборкаДопПоле[ДопПоле]; Секция.ТекущаяОбласть.ГоризонтальноеПоложение = ТаблицаНастройкиПолейПечать.Найти(ДопПоле, "Имя").Выравнивание; мТабДок.Присоединить(Секция); КонецЦикла; ИначеЕсли мСпециальныеПоля[ДопПоле] = 1 Тогда // "Остаток" Секция = мМакет.ПолучитьОбласть("Список|ДопПолеОстаток"); ВыборкаДопПоле = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад", "Все"); Пока ВыборкаДопПоле.Следующий() Цикл Секция.Параметры.ЗначениеДопПоля = ВыборкаДопПоле.Остаток; Секция.ТекущаяОбласть.ГоризонтальноеПоложение = ТаблицаНастройкиПолейПечать.Найти(ДопПоле, "Имя").Выравнивание; мТабДок.Присоединить(Секция); КонецЦикла; Иначе Если мПоляСПредставлениями[ДопПоле] = Неопределено Тогда ПредставлениеПоля = Выборка[ДопПоле]; Иначе ПредставлениеПоля = Выборка[ДопПоле + "Представление"]; КонецЕсли; Секция.Параметры.ЗначениеДопПоля = ПредставлениеПоля; Секция.ТекущаяОбласть.ГоризонтальноеПоложение = ТаблицаНастройкиПолейПечать.Найти(ДопПоле, "Имя").Выравнивание; мТабДок.Присоединить(Секция); КонецЕсли; КонецПроцедуры // ВывестиПолеВОтчет() // Процедура выводит пустое поле в отчет. // // Параметры: // ДопПоле - поле, которое нужно вывести. // РезультатЗапроса - результат запроса. // Секция - выводимая секция. // Процедура ВывестиПустоеПолеВОтчет(ДопПоле, Выборка, Знач Секция) Экспорт Если мСпециальныеПоля[ДопПоле] = 0 Тогда // "МестоХранения" ВыборкаДопПоле = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Приоритет", "Все"); Пока ВыборкаДопПоле.Следующий() Цикл Секция.Параметры.ЗначениеДопПоля = ""; мТабДок.Присоединить(Секция); КонецЦикла; ИначеЕсли мСпециальныеПоля[ДопПоле] = 1 Тогда // "Остаток" Секция = мМакет.ПолучитьОбласть("СписокГруппа|ДопПолеОстаток"); ВыборкаДопПоле = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад", "Все"); Пока ВыборкаДопПоле.Следующий() Цикл Секция.Параметры.ЗначениеДопПоля = ""; мТабДок.Присоединить(Секция); КонецЦикла; Иначе Секция.Параметры.ЗначениеДопПоля = ""; мТабДок.Присоединить(Секция); КонецЕсли; КонецПроцедуры // ВывестиПустоеПолеВОтчет() // Процедура устанавливает ширину колонок полей. // // Параметры: // ДопПоле - поле, которое нужно вывести. // РезультатЗапроса - результат запроса. // Секция - выводимая секция. // Функция УстановитьШиринуПолей(ДопПоле, РезультатЗапроса, ТекКолонка) Экспорт Если мСпециальныеПоля[ДопПоле] = 0 Тогда // "МестоХранения" КоличествоПолей = 0; ВыборкаДопПоле = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Приоритет", "Все"); Пока ВыборкаДопПоле.Следующий() Цикл мТабДок.Область(, ТекКолонка + КоличествоПолей, , ТекКолонка + КоличествоПолей).ШиринаКолонки = ТаблицаНастройкиПолейПечать.Найти(ДопПоле).Ширина; КоличествоПолей = КоличествоПолей + 1; КонецЦикла; ИначеЕсли мСпециальныеПоля[ДопПоле] = 1 Тогда // "Остаток" КоличествоПолей = 0; ВыборкаДопПоле = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад", "Все"); Пока ВыборкаДопПоле.Следующий() Цикл мТабДок.Область(, ТекКолонка + КоличествоПолей, , ТекКолонка + КоличествоПолей + 1).ШиринаКолонки = ТаблицаНастройкиПолейПечать.Найти(ДопПоле).Ширина; КоличествоПолей = КоличествоПолей + 1; КонецЦикла; Иначе мТабДок.Область(, ТекКолонка, , ТекКолонка).ШиринаКолонки = ТаблицаНастройкиПолейПечать.Найти(ДопПоле).Ширина; КоличествоПолей = 1; КонецЕсли; Возврат КоличествоПолей; КонецФункции // УстановитьШиринуПолей() // Процедура обновляет построитель отчета. // Установленные настройки при этом не изменяются. // Процедура ОбновитьПостроительОтчета() Экспорт Настройки = ПостроительОтчета.ПолучитьНастройки(); ЗаполнитьПостроительОтчета(); ПостроительОтчета.УстановитьНастройки(Настройки); КонецПроцедуры // ОбновитьПостроительОтчета() // Проверяет корректность установленных пользователем настроек. // // Параметры: // Отказ - в этот параметр возвращается значение Истина, если обнаружены ошибки. // Процедура ПроверитьКорректностьНастроек(Отказ) Экспорт Если Не ЗначениеЗаполнено(Документ) Тогда Предупреждение("Не выбран документ для печати!"); Отказ = Истина; Возврат; КонецЕсли; //Если СписокСкладов.Количество() = 0 Тогда // Предупреждение("Не выбраны склады!"); // Отказ = Истина; // Возврат; //КонецЕсли; Если КоличествоУровнейМестХранения = 0 Тогда Предупреждение("Не указано количество уровней мест хранения!"); Отказ = Истина; Возврат; КонецЕсли; КоличествоИзмерений = ПостроительОтчета.ИзмеренияСтроки.Количество() - 1; ИзмерениеНоменклатура = ПостроительОтчета.ИзмеренияСтроки.Найти("Номенклатура"); Если ИзмерениеНоменклатура = Неопределено Тогда Предупреждение("Отсутствует обязательная группировка но номенклатуре!"); Отказ = Истина; Возврат; КонецЕсли; Индекс = ПостроительОтчета.ИзмеренияСтроки.Индекс(ИзмерениеНоменклатура); Если Индекс <> КоличествоИзмерений Тогда Предупреждение ("Группировка: ""Номенклатура"" должна быть последней в измерениях строк."); ПостроительОтчета.ИзмеренияСтроки.Сдвинуть(ИзмерениеНоменклатура, КоличествоИзмерений - Индекс); КонецЕсли; СоответствиеСтрок = Новый Соответствие; Для Каждого СтрокаПостроителя Из ПостроительОтчета.ИзмеренияСтроки Цикл Если СоответствиеСтрок[СтрокаПостроителя.ПутьКДанным] = Неопределено Тогда СоответствиеСтрок.Вставить(СтрокаПостроителя.ПутьКДанным, СтрокаПостроителя); Иначе Предупреждение("Повторяющаяся группировка " + СтрокаПостроителя.Представление + "." + Символы.ПС + "Нельзя использовать одинаковые поля группировки строк!"); Отказ = Истина; Прервать; КонецЕсли; КонецЦикла; КонецПроцедуры // ПроверитьКорректностьНастроек() // В текст для построителя отчета вставляет свойства. // Скопирована из общего модуля и изменена. Процедура ДобавитьВТекстСвойстваЛокально(ТаблицаПолей, Текст, СтруктураПредставлениеПолей, мСоответствиеНазначений, СтруктураПараметры, ТекстИсточникиСведений="", ТекстПоляКатегорий="", ТекстПоляСвойств="", ТекстПоляСгруппироватьПо = "", ЗаменятьСвойства = "//СВОЙСТВА", ЗаменятьКатегории = "//КАТЕГОРИИ", ЗаменятьСоединения = "//СОЕДИНЕНИЯ", ЗаменятьСгруппироватьПо = "//СГРУППИРОВАТЬПО", ИдентификаторыПараметровДляОтборовПоКатегориям = "", ЗаменятьИтоги = "//ИТОГИ", ЗаменятьПредставления = "//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА") Экспорт // Добавляемые фрагменты запроса. ТекстПоляСвойствДляГруппировки = ""; ТекстИсточникиСведений =""; ТекстПоляСвойств = ""; ТекстПоляСвойствИтоги = ""; ТекстПоляСвойствПредставления = ""; Индекс = 0; СвойстваОбъектов = ПланыВидовХарактеристик.СвойстваОбъектов.Выбрать(); Пока СвойстваОбъектов.Следующий() Цикл Если СвойстваОбъектов.ЭтоГруппа ИЛИ СвойстваОбъектов.ПометкаУдаления Тогда Продолжить; КонецЕсли; Поля = ТаблицаПолей.НайтиСтроки(Новый Структура("Назначение", СвойстваОбъектов.НазначениеСвойства)); Для Каждого Поле из Поля Цикл // Для списка всех полей. ТекстПоляСвойств = ТекстПоляСвойств + ", | Свойство" + Индекс + ".Значение" + " КАК " + "Свойство" + Индекс + "Значение"; ТекстПоляСвойствИтоги = ТекстПоляСвойствИтоги + ", | МИНИМУМ(Свойство" + Индекс + ".Значение)"; ТекстПоляСвойствПредставления = ТекстПоляСвойствПредставления + ", | Свойство" + Индекс + ".Значение.Представление" + " КАК " + "Свойство" + Индекс + "ЗначениеПредставление"; ТекстПоляСвойствДляГруппировки = ТекстПоляСвойствДляГруппировки + ", | Свойство" + Индекс + ".Значение"; // Источник для свойств. ТекстИсточникиСведений = ТекстИсточникиСведений + Символы.ПС + "{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК Свойство" + Индекс + " |ПО Свойство" + Индекс + ".Объект = " + Поле.ПутьКДанным + " |И Свойство" + Индекс + ".Свойство = &ПараметрСвойство" + Индекс + "}"; СтруктураПараметры.Вставить("ПараметрСвойство" + Индекс, СвойстваОбъектов.Ссылка); СтруктураПредставлениеПолей.Вставить("Свойство" + Индекс + "Значение", СвойстваОбъектов.Наименование + " (св-во " + Поле.Представление + ")"); мСоответствиеНазначений.Вставить(СвойстваОбъектов.Наименование + " (св-во " + Поле.Представление + ")", СвойстваОбъектов.Ссылка); Индекс = Индекс + 1; КонецЦикла; КонецЦикла; Текст = СтрЗаменить(Текст, ЗаменятьСвойства, ТекстПоляСвойств); Текст = СтрЗаменить(Текст, ЗаменятьИтоги, ТекстПоляСвойствИтоги); Текст = СтрЗаменить(Текст, ЗаменятьПредставления, ТекстПоляСвойствПредставления); Текст = СтрЗаменить(Текст, ЗаменятьСоединения, ТекстИсточникиСведений); Текст = СтрЗаменить(Текст, ЗаменятьСгруппироватьПо, ТекстПоляСвойствДляГруппировки); КонецПроцедуры // ДобавитьВТекстСвойстваЛокально() // Производит рекурсивный обход выборки, // выводит в макет строки из текущей выборки. // // Параметры: // Выборка - текущая выборка. // НомерГруппировки - текущий номер группировки строк. // Процедура ВывестиСтроку(Выборка, НомерГруппировки) Экспорт // Обойдем в цикле переданную выборку. Пока Выборка.Следующий() Цикл НазваниеГруппировки = Выборка.Группировка(); ЗначениеГруппировки = Выборка[НазваниеГруппировки]; Уровень = Выборка.Уровень(); ЭтоНеИтогПоИерархии = (Выборка.ТипЗаписи() <> ТипЗаписиЗапроса.ИтогПоИерархии); ЭтоНижнийУровень = (НазваниеГруппировки = "Номенклатура" И ЭтоНеИтогПоИерархии); Если мПоляСПредставлениями[НазваниеГруппировки] = Неопределено Тогда ПредставлениеГруппировки = Выборка[НазваниеГруппировки]; Иначе ПредставлениеГруппировки = Выборка[НазваниеГруппировки + "Представление"]; КонецЕсли; // Если тип записи - это итог по иерархии, // то для вывода будем использовать секции, предназначенные для иерархии. Если ЭтоНижнийУровень Тогда мНомерСтроки = мНомерСтроки + 1; СекцияНачало = мСписокНачало; СекцияНачало.Параметры.НомерСтроки = мНомерСтроки; СекцияНоменклатура = мСписокНоменклатура; СекцияДопПоле = мСписокДопПоле; Иначе СекцияНачало = мСписокГруппаНачало; СекцияНоменклатура = мСписокГруппаНоменклатура; СекцияДопПоле = мСписокГруппаДопПоле; КонецЕсли; СекцияНоменклатура.Параметры.Измерение = ПредставлениеГруппировки; Если ЭтоНеИтогПоИерархии Тогда СекцияНоменклатура.Параметры.Расшифровка = ЗначениеГруппировки; КонецЕсли; // Если выведены все группировки верхних уровней, // то выведем доп. поля. Если ЭтоНижнийУровень Тогда ВыборкаЕдиницыИзмерения = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ЕдиницаИзмерения"); Пока ВыборкаЕдиницыИзмерения.Следующий() Цикл мТабДок.Вывести(СекцияНачало, Уровень, , Истина); Если ВыборкаЕдиницыИзмерения.Вес = 0 Тогда мВесВведенНеДляВсехТоваров = Истина; Иначе мИтогВес = мИтогВес + ВыборкаЕдиницыИзмерения.Вес; КонецЕсли; Для Тмп = 1 По мСоответствиеДопПолейДо.Количество() Цикл ВывестиПолеВОтчет(мСоответствиеДопПолейДо[Тмп], ВыборкаЕдиницыИзмерения, СекцияДопПоле); КонецЦикла; СтрокаДопПолейВместе = ""; Для Тмп = 1 По мКоличествоДопПолейВместе Цикл Если Не ПустаяСтрока(Строка(ВыборкаЕдиницыИзмерения[мСоответствиеДопПолейВместе[Тмп]])) Тогда Если ПустаяСтрока(СтрокаДопПолейВместе) Тогда СтрокаДопПолейВместе = СтрокаДопПолейВместе + " (" + ВыборкаЕдиницыИзмерения[мСоответствиеДопПолейВместе[Тмп]]; Иначе СтрокаДопПолейВместе = СтрокаДопПолейВместе + ", " + ВыборкаЕдиницыИзмерения[мСоответствиеДопПолейВместе[Тмп]]; КонецЕсли; КонецЕсли; КонецЦикла; Если Не ПустаяСтрока(СтрокаДопПолейВместе) Тогда СекцияНоменклатура.Параметры.Измерение = Строка(СекцияНоменклатура.Параметры.Измерение) + СтрокаДопПолейВместе + ")"; КонецЕсли; мТабДок.Присоединить(СекцияНоменклатура); Для Тмп = 1 По мСоответствиеДопПолейПосле.Количество() Цикл ВывестиПолеВОтчет(мСоответствиеДопПолейПосле[Тмп], ВыборкаЕдиницыИзмерения, СекцияДопПоле); КонецЦикла; КонецЦикла; Иначе мТабДок.Вывести(СекцияНачало, Уровень, , Истина); // Для группировок верхних уровней и иерархии выведем // пустые ячейки доп. полей. Для Тмп = 1 По мСоответствиеДопПолейДо.Количество() Цикл ВывестиПустоеПолеВОтчет(мСоответствиеДопПолейДо[Тмп], Выборка, СекцияДопПоле); КонецЦикла; мТабДок.Присоединить(СекцияНоменклатура); Для Тмп = 1 По мСоответствиеДопПолейПосле.Количество() Цикл ВывестиПустоеПолеВОтчет(мСоответствиеДопПолейПосле[Тмп], Выборка, СекцияДопПоле); КонецЦикла; // Если тип записи не итог по иерархии, // то нужно выбрать следующую группировку. Если ЭтоНеИтогПоИерархии Тогда ВывестиСтроку(Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, мСоответствиеГруппировок[НомерГруппировки + 1]), НомерГруппировки + 1); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры // ВывестиСтроку() Функция ВосстановитьНастройки() Экспорт Перем СохраненнаяНастройка; СтруктураНастройки = Новый Структура; СтруктураНастройки.Вставить("Пользователь" , глЗначениеПеременной("глТекущийПользователь")); СтруктураНастройки.Вставить("ИмяОбъекта" , Строка(ЭтотОбъект)); СтруктураНастройки.Вставить("НаименованиеНастройки", ?(мТекущаяНастройка = Неопределено, Неопределено, мТекущаяНастройка.НаименованиеНастройки)); Результат = УниверсальныеМеханизмы.ВосстановлениеНастроек(СтруктураНастройки); Если Результат <> Неопределено Тогда мТекущаяНастройка = Результат; ВосстановитьНастройкиИзСтруктуры(мТекущаяНастройка.СохраненнаяНастройка); Иначе мТекущаяНастройка = СтруктураНастройки; КонецЕсли; ОбновитьСохраненныеНастройки(); КонецФункции // ВосстановитьНастройки() // Процедура восстанавливает сохраненные настройки при открытии обработки. // Процедура ВосстановитьНастройкиПриОткрытии() Экспорт ЗаполнитьПостроительОтчета(); СтруктураНастройки = Новый Структура; СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь")); СтруктураНастройки.Вставить("ИмяОбъекта" , Строка(СсылкаНаОбъект)); Если УниверсальныеМеханизмы.ПолучитьНастройкуИспользоватьПриОткрытии(СтруктураНастройки) Тогда мТекущаяНастройка = СтруктураНастройки; ВосстановитьНастройкиИзСтруктуры(СтруктураНастройки.СохраненнаяНастройка); КонецЕсли; ОбновитьСохраненныеНастройки(); КонецПроцедуры // ВосстановитьНастройкиПриОткрытии() // Заполняет настройки отчета из структуры сохраненных настроек // Функция ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками) Экспорт Перем ТекНастройка; Если СтруктураСНастройками.Свойство("НастройкиПостроителя", ТекНастройка) Тогда ПостроительОтчета.УстановитьНастройки(ТекНастройка); КонецЕсли; СтруктураСНастройками.Свойство("ТаблицаНастройкиПолейПечать" , ТаблицаНастройкиПолейПечать); СтруктураСНастройками.Свойство("СписокСкладов" , СписокСкладов); СтруктураСНастройками.Свойство("ВыводитьЗаголовок" , ВыводитьЗаголовок); СтруктураСНастройками.Свойство("ПоказыватьФорму" , ПоказыватьФорму); СтруктураСНастройками.Свойство("ИспользоватьСвойства" , ИспользоватьСвойства); СтруктураСНастройками.Свойство("КоличествоУровнейМестХранения" , 1); // СтруктураСНастройками.Свойство("КоличествоУровнейМестХранения" , КоличествоУровнейМестХранения); СтруктураСНастройками.Свойство("ПредставленияПриоритетовМестХранения", ПредставленияПриоритетовМестХранения); КонецФункции // ВосстановитьНастройкиИзСтруктуры() Процедура СохранитьНастройки() Экспорт Перем СохраненнаяНастройка; СохраненнаяНастройка = Новый Структура; СформироватьСтруктуруДляСохраненияНастроек(СохраненнаяНастройка); СтруктураНастройки = Новый Структура; СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь")); СтруктураНастройки.Вставить("ИмяОбъекта", Строка(ЭтотОбъект)); СтруктураНастройки.Вставить("НаименованиеНастройки", ?(мТекущаяНастройка = Неопределено, Неопределено, мТекущаяНастройка.НаименованиеНастройки)); СтруктураНастройки.Вставить("СохраненнаяНастройка", СохраненнаяНастройка); СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", Ложь); СтруктураНастройки.Вставить("СохранятьАвтоматически", Ложь); Результат = УниверсальныеМеханизмы.СохранениеНастроек(СтруктураНастройки); Если Результат <> Неопределено Тогда мТекущаяНастройка = Результат; Иначе мТекущаяНастройка = СтруктураНастройки; КонецЕсли; КонецПроцедуры // СохранитьНастройки() // Процедура добавляет колонку в таблицу значений, если ее там нет. // Параметры: // ТЗ - таблица значений, в которую нужно добавить колонку; // ИмяКолонки - имя колонки, которую нужно добавить. Процедура ДобавитьКолонкуВТЗ(ТЗ, ИмяКолонки, ЗначениеПоУмолчанию = Неопределено) Экспорт Если ТЗ.Колонки.Найти(ИмяКолонки) = Неопределено Тогда ТЗ.Колонки.Добавить(ИмяКолонки); ТЗ.ЗаполнитьЗначения(ЗначениеПоУмолчанию, ИмяКолонки); КонецЕсли; КонецПроцедуры // ДобавитьКолонкуВТЗ() // Процедура обновляет настройки после их восстановления. // Процедура ОбновитьСохраненныеНастройки() Экспорт ДобавитьКолонкуВТЗ(ТаблицаНастройкиПолейПечать, "Поле"); ДобавитьКолонкуВТЗ(ТаблицаНастройкиПолейПечать, "Псевдоним"); ДобавитьКолонкуВТЗ(ТаблицаНастройкиПолейПечать, "Выво |
|||
1
shuhard
05.03.14
✎
15:34
|
(0) ни кто это УГ за тебя разгребать не будет
|
|||
2
snap870
05.03.14
✎
15:35
|
да код я дал просто, т.к. спрашивают часто. Интересует больше сама функция.
|
|||
3
salvator
05.03.14
✎
15:37
|
(2) Если нет в текущей конфигурации, найди в типовых.
И кстати в твоей простыне нет вызова этого метода. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |