Группа: Пользователи
Сообщений: 9
Спасибо сказали: 0 раз
Рейтинг: 0
Здравствуйте, подскажите, пожалуйста, программно открываю форму выбора с отборами, в ней выбираю значение -им заполняю поле. а потом снова открывается форма выбора.Через ПолучитьОкна() - это окно не вижу. Как выйти из такого положения?Заранее спасибо
Отбор = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; Отбор.ПравоеЗначение = Массив; Отбор.Использование = Истина;
ДокументРеализации = ФормаВыбора.ОткрытьМодально(); Если НЕ ЗначениеЗаполнено(ДокументРеализации) Тогда Возврат; // ничего не выбрали. КонецЕсли; Элементы.Товары.ТекущиеДанные.ДокументПартии = ДокументРеализации;
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Простите что вмешиваюсь, но реализация задачи отбора партий в таком виде ужасна до безобразия Разве что у вас тестовая база в которой накладных два десятка.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(sweety-twetty @ 20.03.13, 9:14)
Почему ужасна?
Производительность. У вас для отбора клиент получит весь список документов а потом на него наложится отбор из массива ссылок. Это еще не видно что там за процедура "ТоварыДокументПартииНачалоВыбораНаСервере". Вместо вывода в какую-то форму подбора только нужных документов. А главное, что дает список документов? да ничего, у вас может быть в строке количество 10 а по документу есть только 5, и зачем тогда указание этой партии, если туда можно указать любую накладную без контроля количества? Вы можете контролировать это на этапе проведения, но тогда зачем вообще выбирать партию?
upd: и это, на мой дилетантский взгляд так правильнее:
ДокументРеализации = ФормаВыбора.ОткрытьМодально(); Если ЗначениеЗаполнено(ДокументРеализации) Тогда Элементы.Товары.ТекущиеДанные.ДокументПартии = ДокументРеализации; КонецЕсли;
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8
Цитата(logist @ 20.03.13, 9:41)
У вас для отбора клиент получит весь список документов
Это где?
Цитата(logist @ 20.03.13, 9:41)
и это, на мой дилетантский взгляд так правильнее
Это дело вкуса и стиля.
logist, ну и раз по вашему, реализация ужасна - предложите автору более красивое решение. Правда я уже долгое время пытаюсь понять, как вы оцениваете качество решения, не зная истинно конечной цели и каких-то локальных внешних факторов.
Цитата(logist @ 20.03.13, 9:41)
у вас может быть в строке количество 10 а по документу есть только 5, и зачем тогда указание этой партии
Это то о чем я писал выше. Возможно, автор планирует добавить дополнительный код, который будет разбивать 1 строку на несколько, исходя из количества документов партии. Ну это я условно.
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(Vofka @ 20.03.13, 9:54)
Это где?
В данном коде НаКлиент будет передан весь список документов (а вдруг их там 10000 а нужен только один?), и уже на клиенте будет установлен отбор по массиву ссылок.
Цитата(Vofka @ 20.03.13, 9:54)
Это дело вкуса и стиля.
Ну, я просто свое мнение сказал. Я думаю имею же на это право?
Цитата(Vofka @ 20.03.13, 9:54)
предложите автору более красивое решение.
Только после предоплаты И это уже выходит за рамки этой темы.
Цитата(Vofka @ 20.03.13, 9:54)
Правда я уже долгое время пытаюсь понять, как вы оцениваете качество решения, не зная истинно конечной цели и каких-то локальных внешних факторов.
Интуиция, вероятно. Даже если я ошибусь в предположениях, беседа все равно может быть кому-то полезна.
Сообщение отредактировал logist - 20.03.13, 10:04
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8
Цитата(logist @ 20.03.13, 10:01)
В данном коде НаКлиент будет передан весь список документов (а вдруг их там 10000 а нужен только один?)
Каких 10000 документов? Если открывается даже просто форма списка, в которой присутствует динамический список. Разве оно там получает все документы, которые есть в системе?
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(Vofka @ 20.03.13, 10:14)
Разве оно там получает все документы, которые есть в системе?
В типовом варианте - если в форме списка документов не установлен отбор дат с признаком "Использовать при открытии", то передаются все документы, иначе передаются все по указанному периоду. Не передавать все, можно только передав перед открытием в форму параметры отбора, и установив их в список как параметры в ПриСозданииНаСервере. В этом случае надо править форму, код формы и запрос динамического списка.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(sweety-twetty @ 20.03.13, 13:17)
Привожу код функции "ТоварыДокументПартииНачалоВыбораНаСервере".
Ужас Я думал у вас там какой-то партионный учет, а вы просто выбираете документы...
&НаСервере Функция ТоварыДокументПартииНачалоВыбораНаСервере(Договор,Организация,Номенклатура) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка КАК Ссылка |ИЗ | Документ.РеализацияТоваровУслугТовары КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслугТовары.Номенклатура = &Ссылка | И РеализацияТоваровУслугТовары.Ссылка.ДоговорКонтрагента = &Договор | И РеализацияТоваровУслугТовары.Ссылка.Организация = &Организация"; Запрос.УстановитьПараметр("Договор", Договор); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("Ссылка", Номенклатура); Результат = Запрос.Выполнить().Выгрузить(); Возврат Результат.ВыгрузитьКолонку("Ссылка"); КонецФункции
Подправил процедуру, чисто для понимания картины в целом, потому что вам эта процедура, и та на клиенте совершенно не нужна. У реквизита ДокументРеализаци в объекте укажите "Связи параметров выбора", из "Доступных параметров" вам надо выбрать Договор, Организация и Товар.Номенклатура и усё.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(Vofka @ 20.03.13, 16:55)
По умолчанию ставится галка "Динамическое считывание данных". И после этого вы всеравного будете говорить, что на клиент приходят все документы?
Каюсь Но все равно, установка отбора на клиенте притащит туда первую порцию "всех", а уже потом наложится отбор, соответственно если отбор меньше порции то будет подгружаться еще порция, пока отображаемые данные не заполнятся. Это визуально скорее не заметно, но...
Личные бесплатные консультации не даю, для этого есть форум!
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!