Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
1

Сделать чтобы динамический список выскакивал при кое-каком условии

16.10.2012, 17:48. Просмотров 3455. Ответов 23
Метки нет (Все метки)

Привет всем.

У меня такая ситуация: есть 2 поля (допустим их 2) в ТабличнойЧасти документа.
В первом поле я выбираю наименование ТМЦ. А вот когда нажимаю на выбор во втором поле, то должен выскакивать динамический список, в котором имеются строки, связанные с моим(выбранным в первом поле) ТМЦ.

Никак не могу понять как это реализовать. Список (динамический) у меня отображается на форме сразу при открытии формы. Можно . конечно, убрать у него видимость и он не будет отображаться. Но мне нужно чтобы он выскакивал , при том в отдельном окне . Я видел что так можно - показывали пример.

Подскажите, пожалуйста, где можно подробное руководство по этому почитать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 17:48
Ответы с готовыми решениями:

Как сделать так чтобы при заполнении список поднимался
толстый клиент заполняю таблицу значений на форме. как сделать так чтобы при...

Как сделать, чтобы в своих классах выскакивал список доступных свойств?
Когда выпадает список доступных свойств и методов класса возле каждого элемента...

При каком условии грузик будет колебаться вместе с мембраной и при каком начнет подскакивать?
Горизонтальная мембрана совершает синусоидальные колебания с круговой частотой...

Чтобы при нажатии F10 выскакивал калькулятор
Есть программка. Я хочу, чтобы при нажатии например на клавишу F10 выскакивал...

Как сделать чтобы событие Worksheet_Change срабатывало только при определенном условии?
а как сделать чтобы событие Worksheet_Change срабатывало только при...

23
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
16.10.2012, 18:41 2
Цитата Сообщение от CJS Посмотреть сообщение
А вот когда нажимаю на выбор во втором поле, то должен выскакивать динамический список, в котором имеются строки, связанные с моим(выбранным в первом поле) ТМЦ.
Цитата Сообщение от CJS Посмотреть сообщение
У меня такая ситуация: есть 2 поля (допустим их 2) в ТабличнойЧасти документа.
В первом поле я выбираю наименование ТМЦ. А вот когда нажимаю на выбор во втором поле, то должен выскакивать динамический список, в котором имеются строки, связанные с моим(выбранным в первом поле) ТМЦ.
Никак не могу понять как это реализовать. Список (динамический) у меня отображается на форме сразу при открытии формы. Можно . конечно, убрать у него видимость и он не будет отображаться. Но мне нужно чтобы он выскакивал , при том в отдельном окне . Я видел что так можно - показывали пример.
Передаете в форму выбора значение номенклатуры и накладываете по ней отбор в списке. Не совсем понятно, что Вам непонятно: как открыть форму выбора? Как наложить отбор?
0
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
16.10.2012, 18:56  [ТС] 3
Цитата Сообщение от Fenomen Посмотреть сообщение
Передаете в форму выбора значение номенклатуры и накладываете по ней отбор в списке. Не совсем понятно, что Вам непонятно: как открыть форму выбора? Как наложить отбор?
Получается в первом поле мы выбрали ТМЦ , например "Труба". Во втором поле нам нужно выбрать Партию, в которой трубы. Так вот нажимаем мы на кнопку выбора, чтоб выбрать партию из списка ... а система нам отображает не все партии, а только те, в которых есть труба(в отдельном открывающемся окне). Вот мне непонятно как сделать чтобы вот это окно отдельное отображалось. В данный момент при запуске в отладочном режиме, у меня динамический список отображается внутри формы. А вот нужно чтобы он вылетал когда я нажимаю на кнопку выбора Партии.

Отбор я думаю сделаю, хотя вот сейчас не могу понять где УстановитьПараметр для моего отбора. Запустил в отладочном режиме, так оно пишет что параметр запроса не установлен(это я в динамическом списке уже отбор сделал ). А где его устанавливать этот параметр я хз.

Ну вот такой отбор:
1C
1
2
3
4
5
6
7
8
9
ВЫБРАТЬ
    ОстатокТМЦОстатки.ТМЦ,
    ОстатокТМЦОстатки.Партия,
    ОстатокТМЦОстатки.КоличествоОстаток
 
ИЗ
    РегистрНакопления.ОстатокТМЦ.Остатки КАК ОстатокТМЦОстатки
ГДЕ
    ОстатокТМЦОстатки.ТМЦ = &
А в каком месте этот параметр установить не знаю.

Добавлено через 1 минуту
Цитата Сообщение от Fenomen Посмотреть сообщение
Передаете в форму выбора значение номенклатуры и накладываете по ней отбор в списке
Ну вот это оно наверное. А как передать мою номенклатуру туда?
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
16.10.2012, 19:26 4
1. Для справочника "Партии" создаете форму выбора, в которой в динамическом списке указываете Ваш запрос (Запрос кстати написан неверно, параметр должен быть в виртуальной таблице).
2. В процедуре обработчике события "При начале выбора" поля партия, пишите:
1C
1
2
3
4
СтандартнаяОбработка = Ложь;
Параметры = Новый Структура("Номенклатура",СсылкаНаВашуНоменклатуру);
Форма = ПолучитьФорму("Справочник.Партии.ФормаСписка",Параметры, Элемент);
Форма.Открыть();
3. В форме выбора партий при создании указываете:
1C
1
Список.Параметры.УстановитьЗначениеПараметра("НОменклатура", Параметры.Номенклатура);
1
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
16.10.2012, 20:23  [ТС] 5
Не работает.
Сделал вот так (как Вы и писали, просто добавил СтрокаТабличнойЧасти=):
1C
1
2
3
4
5
6
7
8
&НаКлиенте
Процедура РасходПартияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтрокаТабличнойЧасти=Элементы.Расход.ТекущиеДанные;
    СтандартнаяОбработка = Ложь;
Параметры = Новый Структура("Номенклатура",СтрокаТабличнойЧасти.ТМЦ); //ЗДЕСЬ РУГАЕТСЯ
Форма = ПолучитьФорму("Справочник.Партии.ФормаСписка",Параметры, Элемент);
Форма.Открыть();
КонецПроцедуры

И вот так попробовал:

1C
1
2
3
4
5
6
7
8
9
&НаКлиенте
Процедура РасходПартияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтрокаТабличнойЧасти=Элементы.Расход.ТекущиеДанные;
    СтандартнаяОбработка = Ложь;
Параметры = Новый Структура ("Номенклатура");//ЗДЕСЬ РУГАЕТСЯ
Параметры.Вставить("Номенклатура",СтрокаТабличнойЧасти.ТМЦ);
Форма = ПолучитьФорму("Справочник.Партии.ФормаСписка",Параметры, Элемент);
Форма.Открыть();
КонецПроцедуры
Вот так ругается:
{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(581)}: Поле объекта недоступно для записи (Параметры)
Параметры = Новый Структура("Номенклатура");
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
16.10.2012, 21:00 6
Ну назовите создаваемую структуру СтруктураПараметров, а не Параметры.
0
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
16.10.2012, 21:58  [ТС] 7
Цитата Сообщение от Fenomen Посмотреть сообщение
Ну назовите создаваемую структуру СтруктураПараметров, а не Параметры.
Попробовал по разному. Вобщем тут в другом дело.

У меня в Справочнике Партии хранятся наименование партий в предопределенном реквизите Наименование.

Можно ли как-то сделать вот так:
1.Пользователь вводит ТМЦ в поле Табличной части.
2.Пользователь запускает РасходПартияНачалоВыбора.
3. Система осуществляет поиск в регистре накопления записей
1C
1
ГДЕ ВведенноеПользователемТМЦ=ТМЦ_СтрокиРегистраНакпления И Количество>0 ;
Затем система выводит для выбора именно отобранный список.
4. Пользователь выбирает из списка нужную строку и нажимает ОК.
5. Система на основании выбранной строки заполняет остальные строки (заполняет данными, которые берутся из регистра накопления по этой строке: Склад, Партия, Стоимость)

Касательно 3-го пункта, то тут имеется в виду что выбирать нужно из той таблицы, которая хранит Остатки (ТМЦОстатки).
Выборку из регистра несложно сделаь по остаткам, но вот как это запихнуть в форму, которая будет всплывать при РасходПартияНачалоВыбора ... вот тут проблема.
0
Dethmontt
Модератор
Эксперт 1С
2643 / 2436 / 415
Регистрация: 10.03.2011
Сообщений: 8,699
Записей в блоге: 1
Завершенные тесты: 1
16.10.2012, 22:37 8
Посмотри как в типовых конфигурациях организованна форма подбора номенклатуры в документах Реализации и/или Поступления товаров и услуг
1
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
17.10.2012, 01:12 9
Цитата Сообщение от CJS Посмотреть сообщение
Можно ли как-то сделать вот так:
1.Пользователь вводит ТМЦ в поле Табличной части.
2.Пользователь запускает РасходПартияНачалоВыбора.
3. Система осуществляет поиск в регистре накопления записей
Код 1C
1
ГДЕ ВведенноеПользователемТМЦ=ТМЦ_СтрокиРегистраНакпления И Количество>0 ;
Затем система выводит для выбора именно отобранный список.
4. Пользователь выбирает из списка нужную строку и нажимает ОК.
5. Система на основании выбранной строки заполняет остальные строки (заполняет данными, которые берутся из регистра накопления по этой строке: Склад, Партия, Стоимость)
Касательно 3-го пункта, то тут имеется в виду что выбирать нужно из той таблицы, которая хранит Остатки (ТМЦОстатки).
Выборку из регистра несложно сделаь по остаткам, но вот как это запихнуть в форму, которая будет всплывать при РасходПартияНачалоВыбора ... вот тут проблема.
Я в своем предыдущем посте Сделать чтобы динамический список выскакивал при кое-каком условии
это Вам и описал.
1
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
17.10.2012, 16:03  [ТС] 10
Цитата Сообщение от Fenomen Посмотреть сообщение
1. Для справочника "Партии" создаете форму выбора, в которой в динамическом списке указываете Ваш запрос (Запрос кстати написан неверно, параметр должен быть в виртуальной таблице).
2. В процедуре обработчике события "При начале выбора" поля партия, пишите:
1C
1
2
3
4
СтандартнаяОбработка = Ложь;
Параметры = Новый Структура("Номенклатура",СсылкаНаВашуНоменклатуру);
Форма = ПолучитьФорму("Справочник.Партии.ФормаСписка",Параметры, Элемент);
Форма.Открыть();
3. В форме выбора партий при создании указываете:
1C
1
Список.Параметры.УстановитьЗначениеПараметра("НОменклатура", Параметры.Номенклатура);
Сделал вот так:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
&НаКлиенте
Процедура РасходПартияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СтруктураПараметры = Новый Структура("ТМЦ",СтрокаТабличнойЧасти.ТМЦ);
Форма = ПолучитьФорму("Справочник.Партии.ФормаВыбора",СтруктураПараметры, Элемент);
Форма.Открыть();
КонецПроцедуры
 
 
 
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//Ругается на следующую строку
    Список.Параметры.УстановитьЗначениеПараметра("ТМЦ",   СтруктураПараметры.ТМЦ); 
КонецПроцедуры
Но оно ругается. Вот так ругается:
{Справочник.Партии.Форма.ФормаВыбора.Форма(4,56)}: Переменная не определена (СтруктураПараметры)
Список.Параметры.УстановитьЗначениеПараметра("ТМЦ", <<?>>СтруктураПараметры.ТМЦ); (Проверка: Сервер)
Думал может вот здесь :
1C
1
Форма = ПолучитьФорму("Справочник.Партии.ФормаСписка",СтруктураПараметры, Элемент);
нужно ФормаВыбора , но и так и так пробовал - результат один.
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
17.10.2012, 16:49 11
Вы передаете переменную СтруктураПараметры, но это не значит, что она будет также называться в открытой форме. Там то она как раз будет называться Параметры.
Почитайте справку к ПолучитьФорму.
1
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
17.10.2012, 17:52  [ТС] 12
Цитата Сообщение от Fenomen Посмотреть сообщение
Вы передаете переменную СтруктураПараметры, но это не значит, что она будет также называться в открытой форме. Там то она как раз будет называться Параметры.
Почитайте справку к ПолучитьФорму.
Заработало! Спасибо!

Только когда из этого списка выбираю строку, то она не появляется в колонке Партия. эта колонка остается пустой.

И почему-то без условия "ГДЕ ОстатокТМЦОстатки.КоличествоОстаток>0" отбирает партии , в которых количество 0 ... хотя из таблицы остатков выбираю, потому вроде как не должно ...
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
17.10.2012, 18:55 13
Цитата Сообщение от CJS Посмотреть сообщение
Только когда из этого списка выбираю строку, то она не появляется в колонке Партия. эта колонка остается пустой.
Без конфигуратора по рукой трудно сообразить... Попробуйте перед открытие формы вставить строку
1C
1
Форма.РежимВыбора = Истина;
Цитата Сообщение от CJS Посмотреть сообщение
И почему-то без условия "ГДЕ ОстатокТМЦОстатки.КоличествоОстаток>0" отбирает партии , в которых количество 0 ... хотя из таблицы остатков выбираю, потому вроде как не должно ...
Возьмите консоль запросов, и сделайте запрос к виртуальной таблице Остатки по всем измерениям, скорее всего у Вас либо в минус остатки пошли, либо регистр рассогласовался по измерениям.
1
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
17.10.2012, 19:05 14
Соединения в запросе есть?
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
17.10.2012, 19:20 15
CJS, я так понимаю Вы тестовые задачи решаете, и ничего "секретного" там нет. Выкладывайте выгрузку базы, и разговор будет намного продуктивнее.
0
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
17.10.2012, 21:02  [ТС] 16
Цитата Сообщение от Fenomen Посмотреть сообщение
1 Форма.РежимВыбора = Истина;
Определил эту строку в процедуре ПриОткрытии (формы с динамической переменной) , так оно выдает ошибку:
Переменная Форма не определена
Добавлено через 3 минуты
Цитата Сообщение от Fenomen Посмотреть сообщение
Возьмите консоль запросов, и сделайте запрос к виртуальной таблице Остатки по всем измерениям, скорее всего у Вас либо в минус остатки пошли, либо регистр рассогласовался по измерениям.
Да нет, в минусы не могло пойти - там всего 15 записей в регистре накопления из которых всего 2 расход- я легко вижу, у меня там обнулилась 13-я партия, но оно ее выдает.

Добавлено через 51 секунду
Цитата Сообщение от duk337 Посмотреть сообщение
Соединения в запросе есть?
Да, есть такое - у меня там соединение регистра накопления и справочника. Я так понимаю это как-то влияет?
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
17.10.2012, 21:09 17
Базу есть возможность выложить?
0
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
17.10.2012, 21:12  [ТС] 18
Цитата Сообщение от Fenomen Посмотреть сообщение
CJS, я так понимаю Вы тестовые задачи решаете, и ничего "секретного" там нет. Выкладывайте выгрузку базы, и разговор будет намного продуктивнее.
Да, это тестовый задачи при приеме на работу. И в пятницу истекает срок (3 недели) в течении которого мне нужно было сделать это задание. Но сегодня в середине дня я понял что не успеваю. Все-таки не легко с нуля это задание, еще и при том что не знаешь бухгалтерию.
Еще и отупение какое-то пришло - наверное от волнения и от того что я уже 3 недели нагружаю себя повышенно.
То вобщем пролетаю я с этим заданием и нужно будет в другое место устраиваться.

Пока мисть нет нужды в чем-то сильно разбираться - хочу выяснить как работать с динамическим списком да и все... а там будет видно какое задание дадут в другой фирме.
Потому думаю пока не имеет смысла базу выгружать сюда.

Добавлено через 45 секунд
Цитата Сообщение от Fenomen Посмотреть сообщение
Базу есть возможность выложить?
ОК, сейчас разберусь как ее выложить.
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
17.10.2012, 21:13 19
Цитата Сообщение от CJS Посмотреть сообщение
То вобщем пролетаю я с этим заданием и нужно будет в другое место устраиваться.
Если Вам просто дали задачу и не оказывают поддержки в ее решении - в лес такую работу.
0
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
17.10.2012, 21:15  [ТС] 20
Вот база.
0
Вложения
Тип файла: rar 1Cv8.rar (135.6 Кб, 7 просмотров)
17.10.2012, 21:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2012, 21:15

при каком условии можно считать,что R1\R2=l2\l2
при каком условии можно считать,что R1\R2=l2\l2 2)Почему в работе используется...

При каком условии числа A,B,C не являются упорядоченными по возрастанию?
При каком условии числа A,B,C не являются упорядоченными по возрастанию:...

Определить, при каком условии векторы не будут коллинеарны
Векторы a,b и c коллинеарны. При каком условии векторы: c-a, b+1/3с не будут...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru