![]() |
|
Модифицированность формы | ☑ | ||
---|---|---|---|---|
0
Анцеранана
08.05.14
✎
15:34
|
Извините если баян.
Чтобы не портить типовую конфигурацию УПП написал внешнюю обработку заполнения табличной части документа (!). В этой обработке просто форма открывается. Пустая(!), там пока ничего нет. Но при этом почему-то сразу же меняется модифицированность исходной формы документа. Где и когда это происходит я не нашел. Например нажимаю на произвольную кнопку уже после того как звездочка в заголовке включилась. Отладчик пишет - ЭтаФорма.Модифицированность() = Ложь. Чудеса. Вообщем вопросы тупые: как найти в отладчике, что форма модифицирована?. Есть ли возможность убрать модифицированность исх. формы непосредственно из обработки? Строчка ПриЗакрытии ДокументОбъект.ПолучитьФорму().Модифицированность = Ложь; // не помогло.... Код при инициализации обработки если что-такой: Процедура Инициализировать(Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта) Экспорт ДокументОбъект = Объект; Ссылка = Объект.Ссылка; Если Ссылка = Документы.ВозвратТоваровОтПокупателя.ПустаяСсылка() Тогда Предупреждение("Не могу установить визы для документа, т.к. он не записан!",50); Возврат; КонецЕсли; ЭтотОбъект.ПолучитьФорму("Форма1").ОткрытьМодально(); //пустая форма КонецПроцедуры |
|||
1
mehfk
08.05.14
✎
15:42
|
// Процедура формирует подменю по дереву значений
// Параметры: // < СтрокаПодменю > (обязательный) // Тип: Дерево или элемент дерева значений, по данным которого необходимо построить подменю. // < Подменю> (обязательный) // Тип: Элемент командной панели «Кнопка» типа «Подменю». На которой необходимо сформировать новое подменю. // < Очищать> (по умолчанию «Ложь») // Тип: булево. Определяет: следует ли очищать переданное подменю. // < ДобавлятьРазделительВНачало > (по умолчанию «Ложь») // Тип: булево. Определяет: следует ли добавить в начало подменю разделитель. Процедура СформироватьИерархическоеПодменю(СтрокаПодменю, Подменю, Очищать = Ложь, ДобавлятьРазделительВНачало = Ложь) Экспорт |
|||
2
mehfk
08.05.14
✎
15:43
|
Процедура СформироватьИерархическоеПодменю(СтрокаПодменю, Подменю, Очищать = Ложь, ДобавлятьРазделительВНачало = Ложь) Экспорт
Строки = СтрокаПодменю.Строки; Кнопки = Подменю.Кнопки; Если Очищать Тогда Кнопки.Очистить(); КонецЕсли; Если ДобавлятьРазделительВНачало и Строки.Количество() > 0 Тогда Кнопки.Добавить(,ТипКнопкиКоманднойПанели.Разделитель); КонецЕсли; Для Каждого СтрокаКнопки Из Строки Цикл Кнопка = Кнопки.Добавить(СтрокаКнопки.Имя,СтрокаКнопки.ТипКнопки, СтрокаКнопки.Текст, СтрокаКнопки.Действие); Если СтрокаКнопки.Строки.Количество() > 0 Тогда СформироватьИерархическоеПодменю(СтрокаКнопки, Подменю, Ложь, Ложь) КонецЕсли; Если Не СтрокаКнопки.Картинка = Неопределено Тогда Кнопка.Картинка = СтрокаКнопки.Картинка; КонецЕсли; Кнопка.Подсказка = СтрокаКнопки.Подсказка; Кнопка.Пояснение = СтрокаКнопки.Подсказка; Кнопка.Пометка = СтрокаКнопки.Пометка; Кнопка.ИзменяетДанные = СтрокаКнопки.ИзменяетДанные; //Остальные свойства кнопки КонецЦикла; КонецПроцедуры //СформироватьИерархическоеПодменю |
|||
3
mehfk
08.05.14
✎
15:45
|
// Процедура формирует подменю "Заполнить" у ТЧ по дереву значений
// Процедура СформироватьПодменюЗаполненияТЧПоДеревуКнопок(ДеревоКнопок,СоответствиеТЧ) Экспорт Для Каждого КлючИЗначение Из СоответствиеТЧ Цикл ИмяТабличнойЧасти = КлючИЗначение.Ключ.Данные; СтрокаПодменю = ДеревоКнопок.Строки.Найти(ИмяТабличнойЧасти, "Имя"); Если СтрокаПодменю <> Неопределено Тогда // Табличное поле СтрокаПодменю.Расшифровка = КлючИЗначение.Ключ; ПодменюИлиКоманднаяПанель = КлючИЗначение.Значение; Если ТипЗНЧ(ПодменюИлиКоманднаяПанель) = Тип("КоманднаяПанель") Тогда ПодменюИлиКоманднаяПанель = ПодменюИлиКоманднаяПанель.Кнопки.Добавить(,ТипКнопкиКоманднойПанели.Подменю,"Заполнить"); КонецЕсли; СформироватьИерархическоеПодменю(СтрокаПодменю, ПодменюИлиКоманднаяПанель,Ложь,Истина); КонецЕсли; КонецЦикла; КонецПроцедуры // СформироватьПодменюЗаполненияТЧПоДеревуКнопок() |
|||
4
mehfk
08.05.14
✎
15:46
|
Функция ПолучитьДеревоКнопокЗаполненияТабличныхЧастей(Ссылка, Действие) Экспорт
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВнешниеОбработкиПринадлежность.Ссылка, | ВнешниеОбработкиПринадлежность.ДополнительныеПараметрыОбработки КАК ДополнительныеПараметрыОбработки, | ВЫБОР | КОГДА ЕСТЬNULL(ВнешниеОбработкиПринадлежность.ПредставлениеКнопки, """") <> """" ТОГДА ВнешниеОбработкиПринадлежность.ПредставлениеКнопки | ИНАЧЕ ВнешниеОбработкиПринадлежность.Ссылка.Наименование | КОНЕЦ КАК Наименование, | ВнешниеОбработкиПринадлежность.ТабличнаяЧастьИмя КАК ТабличнаяЧастьИмя |ИЗ | Справочник.ВнешниеОбработки.Принадлежность КАК ВнешниеОбработкиПринадлежность |ГДЕ | (НЕ ВнешниеОбработкиПринадлежность.Ссылка.ПометкаУдаления) | И ВнешниеОбработкиПринадлежность.МетаданныеОбъекта = &МетаданныеОбъекта | И ВнешниеОбработкиПринадлежность.Ссылка.ВидОбработки = &ВидОбработки | |УПОРЯДОЧИТЬ ПО | ТабличнаяЧастьИмя |ИТОГИ ПО | ТабличнаяЧастьИмя"; МетаданныеОбъекта = Ссылка.Метаданные(); ДеревоКнопок = ИнициализироватьДеревоДополнительныхКнопок(); Запрос.УстановитьПараметр("ВидОбработки", Перечисления.ВидыДополнительныхВнешнихОбработок.ЗаполнениеТабличныхЧастей); Если Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда Запрос.УстановитьПараметр("МетаданныеОбъекта", "Документ." + МетаданныеОбъекта.Имя); ИначеЕсли Метаданные.Справочники.Содержит(МетаданныеОбъекта) Тогда Запрос.УстановитьПараметр("МетаданныеОбъекта", "Справочник." + МетаданныеОбъекта.Имя); ИначеЕсли Метаданные.Отчеты.Содержит(МетаданныеОбъекта) Тогда Запрос.УстановитьПараметр("МетаданныеОбъекта", "Отчет." + МетаданныеОбъекта.Имя); Иначе Возврат ДеревоКнопок; КонецЕсли; НомерКнопки = 0; Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл СтрокаПодменю = ДобавитьСтрокуВДеревоКнопок(ДеревоКнопок, Выборка.ТабличнаяЧастьИмя, , , , , , , , , Истина); ВыборкаДействий = Выборка.Выбрать(); Пока ВыборкаДействий.Следующий() Цикл НомерКнопки = НомерКнопки + 1; СтруктураРасшифровки = Новый Структура("СсылкаНаВнешнююОбработку, ДополнительныеПараметрыОбработки", ВыборкаДействий.Ссылка, ВыборкаДействий.ДополнительныеПараметрыОбработки.Получить()); ДобавитьСтрокуВДеревоКнопок(СтрокаПодменю, "ЗаполнениеТЧ"+НомерКнопки, ТипКнопкиКоманднойПанели.Действие, ВыборкаДействий.Наименование, Действие , СтруктураРасшифровки, , , , , Истина); КонецЦикла; КонецЦикла; Возврат ДеревоКнопок; КонецФункции // () |
|||
5
mehfk
08.05.14
✎
15:46
|
Функция ДобавитьСтрокуВДеревоКнопок(СтрокаПодменю, Имя, Знач ТипКнопки = Неопределено ,Текст = "", Действие = Неопределено, Расшифровка = Неопределено, Пометка = Ложь, Подсказка = "", Картинка = Неопределено, Позиция = Неопределено, ИзменяетДанные = Ложь)
Если ТипКнопки = Неопределено Тогда ТипКнопки = ТипКнопкиКоманднойПанели.Действие; КонецЕсли; Если Позиция = Неопределено Тогда СтрокаКнопки = СтрокаПодменю.Строки.Добавить(); Иначе СтрокаКнопки = СтрокаПодменю.Строки.Вставить(Позиция); КонецЕсли; СтрокаКнопки.Имя = Имя; СтрокаКнопки.ТипКнопки = ТипКнопки; СтрокаКнопки.Текст = Текст; СтрокаКнопки.Действие = Действие; СтрокаКнопки.Картинка = Картинка; СтрокаКнопки.Подсказка = Подсказка; СтрокаКнопки.Пометка = Пометка; СтрокаКнопки.ИзменяетДанные = ИзменяетДанные; СтрокаКнопки.Расшифровка = Расшифровка; Возврат СтрокаКнопки; КонецФункции |
|||
6
mehfk
08.05.14
✎
15:54
|
Делай так
Процедура Инициализировать(Док, п1, п2) Экспорт Мод = Док.Модифицированность(); // Вставить мегакод Док.ПолучитьФорму().Модифицированность = Мод Или Ложь; КонецПроцедуры |
|||
7
mehfk
08.05.14
✎
15:55
|
Док.ПолучитьФорму().Модифицированность = Мод Или Ложь; ==>
Док.ПолучитьФорму().Модифицированность = Мод; |
|||
8
Анцеранана
08.05.14
✎
16:14
|
(6) Спасибо огромное! В ПриЗакрытии не получилось. А в Инициализировать прошло на ура! Вот такая особенность , понимаешь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |