Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Двойное открытие формы выбора          
sweety-twetty Подменю пользователя
сообщение 19.03.13, 14:56
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 9
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте, подскажите, пожалуйста, программно открываю форму выбора с отборами, в ней выбираю значение -им заполняю поле. а потом снова открывается форма выбора.Через ПолучитьОкна() - это окно не вижу. Как выйти из такого положения?Заранее спасибо

&НаКлиенте
Процедура ТоварыДокументПартииНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Массив = ТоварыДокументПартииНачалоВыбораНаСервере(Объект.ДоговорКонтрагента, Объект.Организация,ЭтаФорма.Элементы.Товары.ТекущиеДанные.Номенклатура);    
    ФормаВыбора = ПолучитьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора");
    
    //добавляем отбор по ссылке на документ
    
    Отбор = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
    Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
    Отбор.ПравоеЗначение = Массив;
    Отбор.Использование = Истина;

    ДокументРеализации = ФормаВыбора.ОткрытьМодально();
    Если НЕ ЗначениеЗаполнено(ДокументРеализации) Тогда
        Возврат; // ничего не выбрали.
    КонецЕсли;
    Элементы.Товары.ТекущиеДанные.ДокументПартии = ДокументРеализации;

КонецПроцедуры


Сообщение отредактировал Vofka - 19.03.13, 15:30

DmitryS Подменю пользователя
сообщение 19.03.13, 15:27
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 15
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

СтандартнаяОбработка = Ложь;

Спасибо сказали: sweety-twetty,

logist Подменю пользователя
сообщение 19.03.13, 16:59
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Простите что вмешиваюсь, но реализация задачи отбора партий в таком виде ужасна до безобразия smile.gif Разве что у вас тестовая база в которой накладных два десятка.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

sweety-twetty Подменю пользователя
сообщение 20.03.13, 9:14
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 9
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(logist @ 19.03.13, 16:59) *
реализация задачи отбора партий в таком виде ужасна до безобразия smile.gif

Почему ужасна?

logist Подменю пользователя
сообщение 20.03.13, 9:41
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(sweety-twetty @ 20.03.13, 9:14) *
Почему ужасна?

Производительность. У вас для отбора клиент получит весь список документов а потом на него наложится отбор из массива ссылок. Это еще не видно что там за процедура "ТоварыДокументПартииНачалоВыбораНаСервере". Вместо вывода в какую-то форму подбора только нужных документов.
А главное, что дает список документов? да ничего, у вас может быть в строке количество 10 а по документу есть только 5, и зачем тогда указание этой партии, если туда можно указать любую накладную без контроля количества? Вы можете контролировать это на этапе проведения, но тогда зачем вообще выбирать партию?

upd: и это, на мой дилетантский взгляд так правильнее:
    ДокументРеализации = ФормаВыбора.ОткрытьМодально();
    Если ЗначениеЗаполнено(ДокументРеализации) Тогда
        Элементы.Товары.ТекущиеДанные.ДокументПартии = ДокументРеализации;
    КонецЕсли;



Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 20.03.13, 9:54
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(logist @ 20.03.13, 9:41) *
У вас для отбора клиент получит весь список документов

Это где?

Цитата(logist @ 20.03.13, 9:41) *
и это, на мой дилетантский взгляд так правильнее

Это дело вкуса и стиля.

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

Цитата(logist @ 20.03.13, 9:41) *
у вас может быть в строке количество 10 а по документу есть только 5, и зачем тогда указание этой партии

Это то о чем я писал выше. Возможно, автор планирует добавить дополнительный код, который будет разбивать 1 строку на несколько, исходя из количества документов партии. Ну это я условно.

Сообщение отредактировал Vofka - 20.03.13, 9:56

logist Подменю пользователя
сообщение 20.03.13, 10:01
Сообщение #7

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Vofka @ 20.03.13, 9:54) *
Это где?

В данном коде НаКлиент будет передан весь список документов (а вдруг их там 10000 а нужен только один?), и уже на клиенте будет установлен отбор по массиву ссылок.

Цитата(Vofka @ 20.03.13, 9:54) *
Это дело вкуса и стиля.

Ну, я просто свое мнение сказал. Я думаю имею же на это право?

Цитата(Vofka @ 20.03.13, 9:54) *
предложите автору более красивое решение.

Только после предоплаты wink.gif И это уже выходит за рамки этой темы.

Цитата(Vofka @ 20.03.13, 9:54) *
Правда я уже долгое время пытаюсь понять, как вы оцениваете качество решения, не зная истинно конечной цели и каких-то локальных внешних факторов.

Интуиция, вероятно. Даже если я ошибусь в предположениях, беседа все равно может быть кому-то полезна.

Сообщение отредактировал logist - 20.03.13, 10:04


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 20.03.13, 10:14
Сообщение #8

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(logist @ 20.03.13, 10:01) *
В данном коде НаКлиент будет передан весь список документов (а вдруг их там 10000 а нужен только один?)

Каких 10000 документов? Если открывается даже просто форма списка, в которой присутствует динамический список. Разве оно там получает все документы, которые есть в системе?

logist Подменю пользователя
сообщение 20.03.13, 10:51
Сообщение #9

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Vofka @ 20.03.13, 10:14) *
Разве оно там получает все документы, которые есть в системе?

В типовом варианте - если в форме списка документов не установлен отбор дат с признаком "Использовать при открытии", то передаются все документы, иначе передаются все по указанному периоду.
Не передавать все, можно только передав перед открытием в форму параметры отбора, и установив их в список как параметры в ПриСозданииНаСервере. В этом случае надо править форму, код формы и запрос динамического списка.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 20.03.13, 11:04
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(logist @ 20.03.13, 10:51) *
В типовом варианте

В типовом - это в каком, какой документ? Мне интересно посмотреть.

logist Подменю пользователя
сообщение 20.03.13, 11:11
Сообщение #11

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Vofka @ 20.03.13, 11:04) *
В типовом - это в каком,

Имеется ввиду форма списка/выбора созданная конструктором, или автоматически генерируемая в случае ее отсутствия в конфигураторе.

Цитата(Vofka @ 20.03.13, 11:04) *
Мне интересно посмотреть.

УНФ форма списка документа АвансовыйОтчет.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

sweety-twetty Подменю пользователя
сообщение 20.03.13, 13:17
Сообщение #12

Молчаливый
*
Группа: Пользователи
Сообщений: 9
Спасибо сказали: 0 раз
Рейтинг: 0

Привожу код функции "ТоварыДокументПартииНачалоВыбораНаСервере".
&НаСервере
Функция ТоварыДокументПартииНачалоВыбораНаСервере(Договор,Организация,Номенклатура)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    РеализацияТоваровУслуг.Ссылка КАК Ссылка
                   |ИЗ
                   |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                   |        ПО РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка
                   |ГДЕ
                   |    РеализацияТоваровУслугТовары.Номенклатура = &Ссылка
                   |    И РеализацияТоваровУслуг.ДоговорКонтрагента = &Договор
                   |    И РеализацияТоваровУслуг.Организация = &Организация";
    Запрос.УстановитьПараметр("Договор", Договор);
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Ссылка", Номенклатура);
    РезультатВыборки = Запрос.Выполнить().Выбрать();
    
    СписокОтбора = Новый Массив;
    Пока РезультатВыборки.Следующий() Цикл
        СписокОтбора.Добавить(РезультатВыборки.Ссылка)
    КонецЦикла;
    
    Возврат СписокОтбора;
КонецФункции

logist Подменю пользователя
сообщение 20.03.13, 14:05
Сообщение #13

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(sweety-twetty @ 20.03.13, 13:17) *
Привожу код функции "ТоварыДокументПартииНачалоВыбораНаСервере".

Ужас smile.gif Я думал у вас там какой-то партионный учет, а вы просто выбираете документы...

&НаСервере
Функция ТоварыДокументПартииНачалоВыбораНаСервере(Договор,Организация,Номенклатура)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    РеализацияТоваровУслуг.Ссылка КАК Ссылка
                   |ИЗ
                   |    Документ.РеализацияТоваровУслугТовары КАК РеализацияТоваровУслуг
                   |ГДЕ
                   |    РеализацияТоваровУслугТовары.Номенклатура = &Ссылка
                   |    И РеализацияТоваровУслугТовары.Ссылка.ДоговорКонтрагента = &Договор
                   |    И РеализацияТоваровУслугТовары.Ссылка.Организация = &Организация";
    Запрос.УстановитьПараметр("Договор", Договор);
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Ссылка", Номенклатура);
    Результат = Запрос.Выполнить().Выгрузить();
    Возврат Результат.ВыгрузитьКолонку("Ссылка");
КонецФункции

Подправил процедуру, чисто для понимания картины в целом, потому что вам эта процедура, и та на клиенте совершенно не нужна. У реквизита ДокументРеализаци в объекте укажите "Связи параметров выбора", из "Доступных параметров" вам надо выбрать Договор, Организация и Товар.Номенклатура и усё.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 20.03.13, 16:55
Сообщение #14

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(logist @ 20.03.13, 11:11) *
Имеется ввиду форма списка/выбора созданная конструктором, или автоматически генерируемая в случае ее отсутствия в конфигураторе.

По умолчанию ставится галка "Динамическое считывание данных". И после этого вы всеравного будете говорить, что на клиент приходят все документы?

Цитата(logist @ 20.03.13, 11:11) *
УНФ форма списка документа АвансовыйОтчет.

Надо не забыть посмотреть. Но я очень сомневаюсь, что это так. Думаю, что конфигурацию не глупые люди делали.

Ardi Подменю пользователя
сообщение 20.03.13, 17:32
Сообщение #15

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

В семёрке в DBF по несколько таблиц ЦЕЛИКОМ копируются на компьютер пользователя для выборки данных. И жили же как-то люди.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

logist Подменю пользователя
сообщение 20.03.13, 18:19
Сообщение #16

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Vofka @ 20.03.13, 16:55) *
По умолчанию ставится галка "Динамическое считывание данных". И после этого вы всеравного будете говорить, что на клиент приходят все документы?

Каюсь 03000000.gif 73000000.gif
Но все равно, установка отбора на клиенте притащит туда первую порцию "всех", а уже потом наложится отбор, соответственно если отбор меньше порции то будет подгружаться еще порция, пока отображаемые данные не заполнятся. Это визуально скорее не заметно, но...


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.04.24, 6:52
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!