|
Как открыть форму регистра сведений для выбора? | ☑ | ||
---|---|---|---|---|
0
Xelga
29.08.12
✎
15:49
|
Из документа нужно открыть форму регистра сведений для выбора значения. В модуле формы документа пишу
НоменклатураДляПОдбора = Новый Структура("Номенклатура",Элементы.ЗНМатериалы.ДанныеСтроки(Элементы.ЗНМатериалы.ТекущаяСтрока).Номенклатура); Аналог = ОткрытьФормуМодально("РегистрСведений.АналогиНоменклатуры.Форма.ФормаДляНоменклатуры",НоменклатураДляПОдбора); Как обратится к параметру в форме регистра сведений? И как сделать , чтобы форма открывалась для подбора? |
|||
1
Wobland
29.08.12
✎
15:49
|
что ты хочешь выбрать?
|
|||
2
Xelga
29.08.12
✎
15:56
|
В УНФ есть регистр сведений АналогиНоменклатуры, мне нужно открыть форму, в которой будут перечислены Аналоги текущей номенклатуры и выбрать одно значение Аналог
|
|||
3
Wobland
29.08.12
✎
15:57
|
(2) посмотреть не могу. аналог какого типа? просится форма его выбора
|
|||
4
Wobland
29.08.12
✎
15:58
|
(3) *его форма выбора
|
|||
5
МишКа
29.08.12
✎
16:00
|
(2) Если одно значение, зачем тогда подбор?
Проще всего - заполнить свойство "СписокВыбора" у соответствующего поля ввода в документе. |
|||
6
Xelga
29.08.12
✎
16:00
|
(3)тип аналога - справочник номенклатура
|
|||
7
Wobland
29.08.12
✎
16:01
|
(6) ну вот и выбирай номенклатуру, а не то, что ты подумала. а на форму выбора можно отбор наколдовать или даже нарисовать свою
|
|||
8
Xelga
29.08.12
✎
16:01
|
(5) это не поле ввода, этот список должен открываться по кнопке
|
|||
9
Xelga
29.08.12
✎
16:03
|
(3) а я что-то не пойму, надо форму выбора справочника Номенклатура что ли? а в ней что ли отбор при открытии какой-то делать через запрос?
|
|||
10
Rounder
29.08.12
✎
16:03
|
Чтобы только для подбора - нужно форму сначала получить. Потом для Списка установить РежимВыбора (можно еще и только просмотр). Потом открыть форму.
|
|||
11
Xelga
29.08.12
✎
16:04
|
(7) дак отбор то вряд ли поможет мне на надо запросом список значений формировать
|
|||
12
Rounder
29.08.12
✎
16:04
|
Что является критерием для отбора? Это поле строки табличной части или реквизит формы?
|
|||
13
Xelga
29.08.12
✎
16:05
|
(10) это как?
|
|||
14
Wobland
29.08.12
✎
16:06
|
второй раз за сегодня говорю
СписокОрганизаций.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0)); ЭлементыФормы.Организации.Значение.Отбор.Ссылка.Использование=Истина; ЭлементыФормы.Организации.Значение.Отбор.Ссылка.ВидСравнения=ВидСравнения.ВСписке; ЭлементыФормы.Организации.Значение.Отбор.Ссылка.Значение=СписокОрганизаций; |
|||
15
Xelga
29.08.12
✎
16:07
|
есть табличная часть ЗНМатериалы в ней реквизит Номенклатура, нужно чтобы можно было открыть Список аналогов для этой номенклатуры, выбрать значение и этим значением заменить первоначальную номенклатуры
|
|||
16
Rounder
29.08.12
✎
16:08
|
(13)
&НаКлиенте Процедура РасшифровкаПлатежаДоговорКонтрагентаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Строка = Элемент.Родитель.ТекущиеДанные; СтандартнаяОбработка = Ложь; Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не указана организация."; Сообщение.Поле = "Объект.Организация"; Сообщение.Сообщить(); Возврат; КонецЕсли; Если НЕ ЗначениеЗаполнено(Объект.Контрагент) Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не указан контрагент."; Сообщение.Поле = "Объект.Контрагент"; Сообщение.Сообщить(); Возврат; КонецЕсли; ПараметрыОткрытияФормыВыбора = Новый Структура; СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("Организация" , Объект.Организация); СтруктураПараметров.Вставить("Владелец" , Объект.Контрагент); СтруктураПараметров.Вставить("ВалютаВзаиморасчетов" , Объект.ВалютаДокумента); Если Объект.ВидОперации = ВидОперацииВозвратДенежныхСредствПокупателю Тогда СтруктураПараметров.Вставить("ВидДоговора" , ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СПокупателем")); Иначе СтруктураПараметров.Вставить("ВидДоговора" , ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком")); КонецЕсли; ПараметрыОткрытияФормыВыбора.Вставить("Отбор", СтруктураПараметров); ПараметрыОткрытияФормыВыбора.Вставить("ТекущаяСтрока", Строка.ДоговорКонтрагента); Форма = ПолучитьФорму("Справочник.ДоговорыКонтрагентов.Форма.ФормаВыбораУправляемая", ПараметрыОткрытияФормыВыбора, ЭтаФорма); Форма.КоманднаяПанель.ПодчиненныеЭлементы.ФормаНастройкаСписка.Доступность = Ложь; Форма.КоманднаяПанель.ПодчиненныеЭлементы.ФормаИзменитьФорму.Доступность = Ложь; РезультатВыбора = Форма.ОткрытьМодально(); Если РезультатВыбора <> Неопределено И РезультатВыбора <> ПараметрыОткрытияФормыВыбора.ТекущаяСтрока Тогда Строка.ДоговорКонтрагента = РезультатВыбора; КонецЕсли; КонецПроцедуры |
|||
17
Wobland
29.08.12
✎
16:08
|
(15) делаешь кнопку, по нажатии получаешь формы выбора номенклатуры, ищешь все аналоги, колдуешь на ТабПоле формы свой отбор, открываешь, тащишься
|
|||
18
Xelga
29.08.12
✎
16:15
|
(17) а в какой процедуре заполнение делать?
|
|||
19
Wobland
29.08.12
✎
16:16
|
(18) в обработчике кнопки
|
|||
20
Xelga
29.08.12
✎
16:19
|
(19) я имею ввиду форму выбора справочника там же где-то надо прописать, какие значения должны отображаться
|
|||
21
Wobland
29.08.12
✎
16:20
|
(20) проверь, у тебя включено отображение постов с номером 14?
|
|||
22
Rounder
29.08.12
✎
16:20
|
В (16) все есть. Формируешь структуру с отбором. И засылаешь ее в форму.
|
|||
23
Rounder
29.08.12
✎
16:21
|
(20) Опиши структуру - как у тебя связан аналог и номенклатура?
|
|||
24
Xelga
29.08.12
✎
16:32
|
(22)
Запрос = Новый Запрос(); Запрос.УстановитьПараметр("Номенклатура", Параметры.Номенклатура); Запрос.Текст = "ВЫБРАТЬ | АналогиНоменклатуры.Аналог |ИЗ | РегистрСведений.АналогиНоменклатуры КАК АналогиНоменклатуры |ГДЕ | АналогиНоменклатуры.Номенклатура = &Номенклатура"; Как значениями этого запроса заполнить форму справочника? |
|||
25
Rounder
29.08.12
✎
16:37
|
Если (24) тогда наверное получать форму выбора, а потом через условное оформление добавлять в нее отбор и тип сравнения например ВСписке. А затем открывать форму.
|
|||
26
Rounder
29.08.12
✎
16:41
|
Либо у справочника Номенклатура создаешь форму ФормаПодбора. А дальше по аналогии:
&НаКлиенте Процедура ДенежныйЧекНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не указана организация."; Сообщение.Поле = "Объект.Организация"; Сообщение.Сообщить(); Возврат; КонецЕсли; Если НЕ ЗначениеЗаполнено(Объект.Касса) Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не выбрана касса."; Сообщение.Поле = "Объект.Касса"; Сообщение.Сообщить(); Возврат; КонецЕсли; СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("ВалютаДокумента" , Объект.ВалютаДокумента); Если ЗначениеЗаполнено(ЭтаФорма.СтатьяДДС) Тогда СтруктураПараметров.Вставить("СтатьяДвиженияДенежныхСредств", ЭтаФорма.СтатьяДДС); КонецЕсли; СтруктураПараметров.Вставить("Организация" , Объект.Организация); СтруктураПараметров.Вставить("Касса" , Объект.Касса); МассивПолей = Новый Массив; МассивПолей.Добавить("ДенежныйЧек"); МассивПолей.Добавить("ОстатокПоЧеку"); МассивПолей.Добавить("ВалютаДокумента"); МассивПолей.Добавить("СуммаЧека"); МассивПолей.Добавить("СтатьяДвиженияДенежныхСредств"); МассивПолей.Добавить("Касса"); МассивПолей.Добавить("Организация"); ТекстЗапроса = "ВЫБРАТЬ | ДенежныеСредстваКПолучениюОстатки.ДокументПолучения КАК ДенежныйЧек, | ДенежныеСредстваКПолучениюОстатки.СуммаОстаток КАК ОстатокПоЧеку, | ДенежныеСредстваКПолучениюОстатки.ДокументПолучения.ВалютаДокумента КАК ВалютаДокумента, | ДенежныеСредстваКПолучениюОстатки.ДокументПолучения.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств, | ДенежныеСредстваКПолучениюОстатки.ДокументПолучения.Касса КАК Касса, | ДенежныеСредстваКПолучениюОстатки.ДокументПолучения.Организация КАК Организация, | ДенежныеСредстваКПолучениюОстатки.ДокументПолучения.СуммаДокумента КАК СуммаЧека |ИЗ | РегистрНакопления.ДенежныеСредстваКПолучению.Остатки КАК ДенежныеСредстваКПолучениюОстатки |ГДЕ | ДенежныеСредстваКПолучениюОстатки.ДокументПолучения ССЫЛКА Документ.ДенежныйЧек | И ДенежныеСредстваКПолучениюОстатки.СуммаОстаток > 0"; ПараметрыОткрытияФормыВыбора = Новый Структура; ПараметрыОткрытияФормыВыбора.Вставить("ПроизвольныйЗапрос", Истина); ПараметрыОткрытияФормыВыбора.Вставить("Отбор", СтруктураПараметров); ПараметрыОткрытияФормыВыбора.Вставить("МассивПолей", МассивПолей); ПараметрыОткрытияФормыВыбора.Вставить("ТекстЗапроса", ТекстЗапроса); ПараметрыОткрытияФормыВыбора.Вставить("ТекущаяСтрока", Объект.ДенежныйЧек); Форма = ПолучитьФорму("Документ.ДенежныйЧек.Форма.ФормаПодбораУправляемая", ПараметрыОткрытияФормыВыбора, ЭтаФорма); Форма.КоманднаяПанель.ПодчиненныеЭлементы.ФормаНастройкаСписка.Доступность = Ложь; Форма.КоманднаяПанель.ПодчиненныеЭлементы.ФормаИзменитьФорму.Доступность = Ложь; Форма.ОткрытьМодально(); КонецПроцедуры |
|||
27
Rounder
29.08.12
✎
16:42
|
У формы подбора справочника Номенклатура:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("ПроизвольныйЗапрос") Тогда Список.ПроизвольныйЗапрос = Истина; Список.ТекстЗапроса = Параметры.ТекстЗапроса; Для Сч = 0 По Параметры.МассивПолей.Количество() -1 Цикл КолонкаСписка = Элементы.Вставить(Параметры.МассивПолей[Сч], Тип("ПолеФормы"), Элементы.Список); КолонкаСписка.ПутьКДанным = "Список." + Параметры.МассивПолей[Сч]; КолонкаСписка.Вид = ВидПоляФормы.ПолеВвода; КолонкаСписка.РастягиватьПоГоризонтали = Ложь; КонецЦикла; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) Если Этаформа.ВладелецФормы.ИмяФормы = "Документ.ПриходныйКассовыйОрдер.Форма.ФормаДокументаУправляемая" Тогда СтруктураДанныхДляПередачи = Новый Структура; СтруктураДанныхДляПередачи.Вставить("ОстатокПоЧеку", Элемент.ТекущиеДанные.ОстатокПоЧеку); СтруктураДанныхДляПередачи.Вставить("СтатьяДвиженияДенежныхСредств", Элемент.ТекущиеДанные.СтатьяДвиженияДенежныхСредств); СтруктураДанныхДляПередачи.Вставить("ДенежныйЧек", Элемент.ТекущиеДанные.ДенежныйЧек); ЭтаФорма.ВладелецФормы.Проверка(СтруктураДанныхДляПередачи); КонецЕсли; КонецПроцедуры |
|||
28
Rounder
29.08.12
✎
16:43
|
Ну и еще в форме твоего документа экспортную процедуру Проверка.
&НаКлиенте Процедура Проверка(СтруктураДанныхДляПередачи) Экспорт Объект.СуммаДокумента = СтруктураДанныхДляПередачи.ОстатокПоЧеку; Элементы.СуммаДокумента.ТолькоПросмотр = Истина; Объект.РасшифровкаПлатежа[0].СуммаПлатежа = СтруктураДанныхДляПередачи.ОстатокПоЧеку; ЭтаФорма.СтатьяДДС = СтруктураДанныхДляПередачи.СтатьяДвиженияДенежныхСредств; Объект.РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств = СтруктураДанныхДляПередачи.СтатьяДвиженияДенежныхСредств; Объект.ДенежныйЧек = СтруктураДанныхДляПередачи.ДенежныйЧек; Элементы.СтатьяДДС.ТолькоПросмотр = Истина; КонецПроцедуры |
|||
29
Rounder
29.08.12
✎
16:46
|
Таким образом реализовывал подбор денежного чека в форме документа Приходный кассовый ордер. Управляемые формы.
Т.е. возьмешь суть и положишь на свои рельсы. |
|||
30
Xelga
30.08.12
✎
15:20
|
ничего не получается((((
в документе пишу на кнопке для отбора &НаКлиенте Процедура ПодобратьИзАналогов(Команда) НоменклатураДляПОдбора = Новый Структура("Номенклатура",Элементы.ЗНМатериалы.ДанныеСтроки(Элементы.ЗНМатериалы.ТекущаяСтрока).Номенклатура); Аналог = ОткрытьФормуМодально("Справочник.Номенклатура.Форма.ФормаВыбораАналогов",НоменклатураДляПОдбора); КонецПроцедуры В модуле формы справочника &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) МассивПолей = Новый Массив; МассивПолей.Добавить("Аналог"); ТекстЗапроса = "ВЫБРАТЬ | АналогиНоменклатуры.Аналог КАК Аналог |ИЗ | РегистрСведений.АналогиНоменклатуры КАК АналогиНоменклатуры |"; Список.ПроизвольныйЗапрос = Истина; Список.ТекстЗапроса = ТекстЗапроса; Для Сч = 0 По МассивПолей.Количество() -1 Цикл КолонкаСписка = Элементы.Вставить(МассивПолей[Сч], Тип("ПолеФормы"), Элементы.Список); КолонкаСписка.ПутьКДанным = "Список." + МассивПолей[Сч]; КолонкаСписка.Вид = ВидПоляФормы.ПолеВвода; КолонкаСписка.РастягиватьПоГоризонтали = Ложь; КонецЦикла; КонецПроцедуры и возникают 2 проблемы: 1)непонятно как в запрос передать параметр 2) значение которое считывается оказывается в переменной Аналог в процедуре ПодобратьИзАналогов - это число, а мне нужно чтобы это была ссылка на номенклатуру |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |