Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
28 Июл 2017, 13:42
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Форма выбора возвращает не те данные  (Прочитано 1166 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Golickoff

  • ****
  • Сообщений: 254
  • РЕПУТАЦИЯ: 15
  • КПД: 6%
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
Всем привет.

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


Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 137
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
Лучше устанавливайте отбор в списке, не меняя текст запроса
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн Golickoff

  • ****
  • Сообщений: 254
  • РЕПУТАЦИЯ: 15
  • КПД: 6%
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
Лучше устанавливайте отбор в списке, не меняя текст запроса
Боюсь, нужны подробности.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Боюсь, нужны подробности.

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

Оффлайн Vladimir_Sh

  • 1С:Специалист
  • ****
  • Сообщений: 356
  • РЕПУТАЦИЯ: 68
  • КПД: 19%
  • Регистрация: 2015-10-16
  • Компания: Центр бизнес решений "ALT"
  • Профессия: Разработчик 1С
Вот ТУТ можно почитать или ТУТ
Если я Вам помог, нажми - Спасибо!

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1097
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
текст запроса можно и в настройках динамического списка прописать, не обязательно его программно устанавливать.
заодно в настройках проверить - основная таблица не слетает?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Golickoff

  • ****
  • Сообщений: 254
  • РЕПУТАЦИЯ: 15
  • КПД: 6%
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
Вот ТУТ можно почитать или ТУТ
Переделал по первому примеру.
В модуле формы выбора больше ничего нет. В модуле формы документа находится этот код:
&НаКлиенте
Процедура СчётНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СЗСчетов = Новый СписокЗначений;
МассивЗначенийСчетов = Новый Массив;
ПолучитьЗначенияСчетов(МассивЗначенийСчетов);
СЗСчетов.ЗагрузитьЗначения(МассивЗначенийСчетов);
НастройкиКомпоновки = Новый НастройкиКомпоновкиДанных;
ОтборСписка = НастройкиКомпоновки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборСписка.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
    ОтборСписка.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
    ОтборСписка.ПравоеЗначение = СЗСчетов;
    ОтборСписка.Использование = Истина;
ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ФиксированныеНастройки", НастройкиКомпоновки);
ОткрытьФорму("Справочник.Счета.Форма.ФормаВыбора", ПараметрыФормы, Элемент);
КонецПроцедуры

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

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1097
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Процедура СчётНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Golickoff

  • ****
  • Сообщений: 254
  • РЕПУТАЦИЯ: 15
  • КПД: 6%
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
Процедура СчётНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
А бревно в глазу и не заметил. Всем спасибо. Всё работает.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.


 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

alex0402
96 Сообщений
oleg-x
75 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
66 Сообщений
Golickoff Golickoff
53 Сообщений
AIFrame
46 Сообщений
ilyay ilyay
40 Сообщений
Амал
30 Сообщений
MuI_I_Ika MuI_I_Ika
27 Сообщений
lansy
22 Сообщений
Dethmontt Dethmontt
22 Сообщений

* Кто онлайн

  • Точка Гостей: 811
  • Точка Скрытых: 0
  • Точка Пользователей: 10
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal