|
из обычной в управляемую форму | ☑ | ||
---|---|---|---|---|
0
ЧтоТакое1С
19.08.11
✎
14:18
|
вот есть код для обычной формы, как преобразовать его для управляемой?
Процедура КонтрагентПриИзменении(Элемент) ЭлементыФормы.ПолеВыбора1.Значение = ""; ЭлементыФормы.РегНомер.Заголовок = ""; ЭлементыФормы.ИнформацияОПодписке.Заголовок = ""; ТекущийКонтрагент = ЭлементыФормы.Контрагент.Значение; Список2 = Новый СписокЗначений; Запрос2 = Новый Запрос; Запрос2.Текст= "ВЫБРАТЬ РАЗЛИЧНЫЕ | КонфигурацииКонтрагентов.Конфигурация.Ссылка КАК Конфигурация, | КонфигурацииКонтрагентов.РегНомер, | КонфигурацииКонтрагентов.Владелец.Ссылка |ИЗ | Справочник.КонфигурацииКонтрагентов КАК КонфигурацииКонтрагентов |ГДЕ | КонфигурацииКонтрагентов.Владелец.Ссылка = &ТК | И (НЕ КонфигурацииКонтрагентов.ПометкаУдаления)"; Запрос2.УстановитьПараметр("ТК", ТекущийКонтрагент); Результат = Запрос2.Выполнить(); Колонка2 = Запрос2.Выполнить().Выгрузить().ВыгрузитьКолонку("Конфигурация"); Список2.ЗагрузитьЗначения(Колонка2); ЭлементыФормы.ПолеВыбора1.СписокВыбора = Список2; ДатаОбщ = Месяц(ТекущаяДата()) + Год(ТекущаяДата())*12; Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Подписки.Владелец КАК Контрагент, | Подписки.ГодНачалаСопровождения КАК ГодНач, | Подписки.МесяцНачалаСопровождения КАК МесяцНач, | Подписки.СрокСопровождения КАК СрокСопр, | Подписки.ГодНачалаСопровождения * 12 + Подписки.МесяцНачалаСопровождения.Порядок + Подписки.СрокСопровождения КАК КоличествоМесяцев, | Подписки.ВидПодписки.Наименование |ИЗ | Справочник.Подписки КАК Подписки |ГДЕ | Подписки.МесяцНачалаСопровождения.Порядок + Подписки.ГодНачалаСопровождения * 12 < &ТекМесяц | И Подписки.МесяцНачалаСопровождения.Порядок + Подписки.СрокСопровождения + Подписки.ГодНачалаСопровождения * 12 > &ТекМесяц - 1 | И Подписки.Владелец.Ссылка = &Контрагент"; Запрос.УстановитьПараметр("ТекМесяц", ДатаОбщ); Запрос.УстановитьПараметр("Контрагент", ТекущийКонтрагент); Результат=Запрос.Выполнить(); Выборка=Результат.Выбрать(); Если Выборка.Следующий() Тогда Год = Цел(Выборка.КоличествоМесяцев/12); Месяц = Выборка.КоличествоМесяцев - Год*12; ЭлементыФормы.ИнформацияОПодписке.Заголовок = "Подписка " + Выборка.ВидПодпискиНаименование + " действительна до " + Перечисления.НазванияМесяцев.Получить(Месяц-1) + " " + Строка(Год) + " включительно."; иначе ЭлементыФормы.ИнформацияОПодписке.Заголовок = "Нет подписки"; КонецЕсли; ЭлементыФормы.ПолеВыбора1.Доступность = (Список2.Количество() > 0); КонецПроцедуры Процедура ПолеВыбора1ПриИзменении(Элемент) ТекущаяКонф = ЭлементыФормы.ПолеВыбора1.Значение; Запрос3 = Новый Запрос; Запрос3.Текст= "ВЫБРАТЬ | КонфигурацииКонтрагентов.Конфигурация.Ссылка, | КонфигурацииКонтрагентов.РегНомер, | КонфигурацииКонтрагентов.Владелец.Ссылка |ИЗ | Справочник.КонфигурацииКонтрагентов КАК КонфигурацииКонтрагентов |ГДЕ | КонфигурацииКонтрагентов.Конфигурация.Ссылка = &ТКонф | И КонфигурацииКонтрагентов.Владелец.Ссылка = &ТК"; Запрос3.УстановитьПараметр("ТКонф", ТекущаяКонф); Запрос3.УстановитьПараметр("ТК", ТекущийКонтрагент); Результат2=Запрос3.Выполнить(); Выборка=Результат2.Выбрать(); Пока Выборка.Следующий() Цикл ЭлементыФормы.РегНомер.Заголовок = "Регистрационный номер: " + Выборка.РегНомер; КонецЦикла КонецПроцедуры делаю вот так: &НаКлиенте Процедура КонтрагентПриИзменении(Элемент) //ЭтаФорма.ПрограммныйПродукт.Очистить(); //ЭтаФорма.РегНомер.Очистить(); ТекущийКонтрагент = ЭтаФорма.Контрагент; ЭтаФорма.Элементы.ИнформацияОПодписке.Заголовок = КонтрагентПриИзмененииПодпискаСервер (ТекущийКонтрагент); Список2 = КонтрагентПриИзмененииСервер(ТекущийКонтрагент); ЭтаФорма.ПрограммныйПродукт.ДоступныеЗначения = Список2; ЭтаФорма.Элементы.ПрограммныйПродукт.Доступность = (Список2.Количество() > 0); КонецПроцедуры & НаСервере Функция КонтрагентПриИзмененииСервер(ТекущийКонтрагент) Список2 = Новый СписокЗначений; Запрос2 = Новый Запрос; Запрос2.Текст= "ВЫБРАТЬ РАЗЛИЧНЫЕ | КонфигурацииКонтрагентов.Конфигурация.Ссылка КАК Конфигурация, | КонфигурацииКонтрагентов.РегНомер, | КонфигурацииКонтрагентов.Владелец.Ссылка |ИЗ | Справочник.КонфигурацииКонтрагентов КАК КонфигурацииКонтрагентов |ГДЕ | КонфигурацииКонтрагентов.Владелец.Ссылка = &ТК | И (НЕ КонфигурацииКонтрагентов.ПометкаУдаления)"; Запрос2.УстановитьПараметр("ТК", ТекущийКонтрагент); Колонка2 = Запрос2.Выполнить().Выгрузить().ВыгрузитьКолонку("Конфигурация"); Список2.ЗагрузитьЗначения(Колонка2); Возврат Список2 КонецФункции & НаСервере Функция КонтрагентПриИзмененииПодпискаСервер (ТекущийКонтрагент) ДатаОбщ = Месяц(ТекущаяДата()) + Год(ТекущаяДата())*12; Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Подписки.Владелец КАК Контрагент, | Подписки.ГодНачалаСопровождения КАК ГодНач, | Подписки.МесяцНачалаСопровождения КАК МесяцНач, | Подписки.СрокСопровождения КАК СрокСопр, | Подписки.ГодНачалаСопровождения * 12 + Подписки.МесяцНачалаСопровождения.Порядок + Подписки.СрокСопровождения КАК КоличествоМесяцев, | Подписки.ВидПодписки.Наименование |ИЗ | Справочник.Подписки КАК Подписки |ГДЕ | Подписки.МесяцНачалаСопровождения.Порядок + Подписки.ГодНачалаСопровождения * 12 < &ТекМесяц | И Подписки.МесяцНачалаСопровождения.Порядок + Подписки.СрокСопровождения + Подписки.ГодНачалаСопровождения * 12 > &ТекМесяц - 1 | И Подписки.Владелец.Ссылка = &Контрагент"; Запрос.УстановитьПараметр("ТекМесяц", ДатаОбщ); Запрос.УстановитьПараметр("Контрагент", ТекущийКонтрагент); Результат=Запрос.Выполнить(); Выборка=Результат.Выбрать(); Если Выборка.Следующий() Тогда Год = Цел(Выборка.КоличествоМесяцев/12); Месяц = Выборка.КоличествоМесяцев - Год*12; Строка = "Подписка " + Выборка.ВидПодпискиНаименование + " действительна до " + Перечисления.НазванияМесяцев.Получить(Месяц-1) + " " + Строка(Год) + " включительно."; Иначе Строка = "Нет подписки"; КонецЕсли; Возврат Строка; КонецФункции &НаКлиенте Процедура ПрограммныйПродуктПриИзменении(Элемент) ТекущаяКонф = ЭтаФорма.ПрограммныйПродукт; ТекущийКонтрагент = ЭтаФорма.Контрагент; ЭтаФорма.Элементы.РегНомер.Заголовок = ПрограммныйПродуктПриИзмененииСервер(ТекущаяКонф, ТекущийКонтрагент); КонецПроцедуры & НаСервере Функция ПрограммныйПродуктПриИзмененииСервер(ТекущаяКонф, ТекущийКонтрагент) Запрос3 = Новый Запрос; Запрос3.Текст= "ВЫБРАТЬ | КонфигурацииКонтрагентов.Конфигурация, | КонфигурацииКонтрагентов.РегНомер, | КонфигурацииКонтрагентов.Владелец |ИЗ | Справочник.КонфигурацииКонтрагентов КАК КонфигурацииКонтрагентов |ГДЕ | КонфигурацииКонтрагентов.Владелец.Ссылка = &ТК | И КонфигурацииКонтрагентов.Конфигурация.Ссылка = &ТКонф"; Запрос3.УстановитьПараметр("ТК", ТекущийКонтрагент); Запрос3.УстановитьПараметр("ТКонф", ТекущаяКонф); Результат2=Запрос3.Выполнить(); Выборка=Результат2.Выбрать(); Пока Выборка.Следующий() Цикл Строка = "Регистрационный номер: " + Выборка.РегНомер; КонецЦикла; Возврат Строка КонецФункции Ругается на то, что ТекущаяКонф в последнем запросом сравнивается с КонфигурацииКонтрагентов.Конфигурация.Ссылка {Документ.ВопросКонтаргента.Форма.ФормаДокумента.Форма(106)}: Ошибка при вызове метода контекста (Выполнить) Результат2=Запрос3.Выполнить(); по причине: по причине: {(9, 49)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. И КонфигурацииКонтрагентов.Конфигурация.Ссылка <<?>>= &ТКонф Как вообще реализовать ПолеВыбора, на простой форме все просто положил в неё колонку от запроса список открывается, а тут и ПолеВоода то ненайти даже в УФ. |
|||
1
ЧтоТакое1С
19.08.11
✎
14:39
|
подскажите хоть что нить уже
|
|||
2
Mort
19.08.11
✎
14:50
|
По теме смотри в отладчике что посылается в запрос. (Про то как отладку на сервере поймать, тему не заводи. На форуме поищи)
Ну а что данный код можно в музей сдавать, я не стану распространяться. |
|||
3
Alexandr Puzakov
19.08.11
✎
14:50
|
Дык тыкает же в ошибку:
И КонфигурацииКонтрагентов.Конфигурация.Ссылка <<?>>= &ТКонф Стоить проверить передаваемое значение. И устанавливать значения параметров лучше так: Запрос3.УстановитьПараметр("ТК", Объект.ТекущийКонтрагент); Запрос3.УстановитьПараметр("ТКонф", Объект.ТекущаяКонф); P. S. код не айс... |
|||
4
Mort
19.08.11
✎
14:52
|
У меня вообще возникает подозрение, что половину этого кошмара (если не весь) можно связями параметров выбора сделать.
|
|||
5
ЧтоТакое1С
19.08.11
✎
14:54
|
Mort, я не знаю что это даже..
e ТекущаяКонф тип СписокЗначений а пытаемся сравнить с КонфигурацииКонтрагентов.Конфигурация.Ссылка я думаю поэтому ошибка.. |
|||
6
Mort
19.08.11
✎
14:57
|
Ты бы лучше нормально обозначил задачу, поискал по ней информацию и переписал бы это все нафиг.
|
|||
7
Evfarion
19.08.11
✎
14:57
|
За ИмяПеременной1, 2...N - гори в аду!
|
|||
8
ЧтоТакое1С
19.08.11
✎
14:59
|
Задача простая и в первом хоть и как вы говорите корявом варианте она работает, почти. Но в уф нет, нужно чтобы при выборе контрагента, ниже в списке вылезил список именно его подписок, а при выборе подписок вылазил рег номер данной подписки, но блин в уф нет полявыбора нормального и не выходит ничего
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |