8.х Форма выбора для динамически созданного объекта

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Leprecus, 16 дек 2015.

  1. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток. Прошу строго не судить, я лишь учусь.
    Пишу обработку, в которой есть таблица значений, её создаю динамически и передаю на форму. В таблице есть колонка с типом "ДокументСсылка.ЗаказКлиента". На форме, при заполнении ячейки этой колонки открывается ФормаВыбора документа ЗаказКлиента. Меня это не устраивает, хочу чтобы открывалась моя форма. Как это правильно сделать?
    Пробую программно установить своё действие на событие "НачалоВыбора" - но при этом никто не отменял прежнего действия, и у меня открывается две формы. И опять же, я не уверен, что это правильное решение.
    Подскажите пожалуйста каков должен быть верный алгоритм моих действий, для решения данной задачи.
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Для этого у процедуры-обработчика события "НачалоВыбора" есть параметр "СтандартнаяОбработка". Необходимо внутри процедуры этот параметр установить в значение ЛОЖЬ.
    Код:
    СтандартнаяОбработка = Ложь;
  3. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    А не подскажите где её искать эту процедуру обработчика события?
    Не думаю, что речь идёт о той процедуре, которую я сам повесил на это событие.
  4. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Именно о ней.
    Т.е. об этом:
  5. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Тогда подскажите пожалуйста чего не хватает в этом супе. Я ещё не разбирался с передачей значений, пока беспокоит само открытие сразу 2х форм.
    Так установил действие:
    Код:
    Для Каждого Колонка Из ТаблицаПолейВыбора.ПодчиненныеЭлементы Цикл
               Если Колонка.Имя = "КолонкаЗаказ" Тогда
                Колонка.УстановитьДействие("НачалоВыбора","КолонкаЗаказНачалоВыбора");
        КонецЦикла;
    Вот само действие:
    Код:
    &НаКлиенте
    Процедура КолонкаЗаказНачалоВыбора(Элемент, СтандартнаяОбработка)
        СтандартнаяОбработка = Ложь;
        ФормаСписка = ПолучитьФорму("Обработка.ИмпортТрекНомеров.Форма.ФормаВыбора");
        ВыбранноеЗначение = ОткрытьФормуМодально(ФормаСписка);
    КонецПроцедуры
    
  6. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Параметр "СтандартнаяОбработка" должен идти третьим параметром.
    Код:
    Процедура КолонкаЗаказНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Leprecus нравится это.
  7. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    О чудо, все оказалось намного проще) Спасибо, получилось, но тему крыть не стоит, думаю ещё по ней вопросы будут.
  8. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Не знаю, стоит ли продолжать в этой же ветке. Но попробую...
    Форму выбора сделал, результат передаётся. Теперь хотелось бы получить совет по формированию динамического списка на форме. Дело в том, что нужно список формировать в зависимости от содержимого строки таблицы родительской формы. Не знаю, удастся ли такое изобразить передачей параметров в запрос или же нужно как то программно создавать список формы выбора при её создании?
    Допустим: в параметре запроса нужно передать фамилию клиента, по первым символам которой будет осуществляться выборка. Но сколько этих первых символов изначально неизвестно. Что посоветуете?
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Не изобретайте велосипед :)
    Разделите фамилию, имя, отчество на 3 реквизита и можно будет искать данные вводом символов типовыми методами.
  10. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    А можно по подробней про этот поиск вводом символов? Я не представлю, что вы имеете ввиду.
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Погорячился я, поиск вводом символов будет работает только по наименованию/коду, либо в списке можно искать по каждой колонке.
  12. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Хочется копнуть глубже в суть моей задачи для большего понимания. Если у меня есть данные о номере телефона клиента, я планирую осуществить выбор клиента по нему, если же нет - то буду брать ФИО (которые в дательном падеже), извлекать фамилию и отсекать последние 2 символа, и по тому что получилось искать. Но в первую очередь смущает не фиксированное количество символов. С какой стороны подойти в решению, как считаете?
  13. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Считаю, что вы выбрали не тот инструмент для решения вашей задачи. Можно всячески ухитрятся и таки сделать что-то, что будет приближено к требованиям заказчика, но это как правило скажется на производительности всей учетной системы.
  14. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Заказчик ничего не требовал, это я сам импровизирую) Основная задача, подгрузить из эксель данные в заказ клиента.Соответственно в строке есть набор полей, некоторые из них - это те, по которым можно идентифицировать клиента, я их озвучил выше, некоторые необходимы, для внесения в карточку заказа. Я себе представил это так:
    1.Загружаем данные.
    2.Сопоставляем строку конкретному заказу
    3.Если строгих соответствий не нашлось, позволяем ручками выбрать. И вот на этом этапе мы с вами сейчас находимся. Я посчитал, что было бы полезным вывести не весь список договоров, а лишь те, что удовлетворяют некоторым условиям.
    4.Обновляем и записываем данные в договоре.

    А как бы вы посоветовали поступить в данной задаче?
  15. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    1. Обмениваться данными с помощью Excel-файлов - не очень хорошая идея, MS EXCEL может просто не быть на компьютере.
    2. Список договоров для выбора пользователем одного из можно ограничить типовым отбором по ключевым полям: Организация, Контрагент, ВидДоговора, ВалютаВзаиморасчетов. Нет необходимости придумывать динамические отборы по вводу символов в строке поиска(разного типа данных по сути).
    3. Формировать новые элементы в БД - это очень хорошо нужно стандартизировать хранимые данные в файле и в условиях плоских таблиц превращается в некий геморрой, т.к. кроме самих значений необходимо еще и тип значения хранить.

    Посоветовал бы не изобретать велосипеды :)
  16. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    1. Соглашусь, но тут не суть важна откуда данные получены. Главное что они в табличной форме.
    2. Типовым отбором может и можно, но у меня поля для отбора договоров только те, что описаны ранее. Номер телефона (который может быть введён ошибочно или вовсе не заполнен) и ФИО в дательном падеже. Это основной вопрос, по которому требуется консультация.
    3. Скрывать не стану - много умных слов не моего уровня, рассуждать на эту тему не берусь.
  17. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Вы поймите одну простую вещь: выбрать из списка - не сложно, если список из 10 элементов и все они различаются визуально, а когда список совпадений будет большой? Полных тезок как будете различать? Ошибка в одной цифре в номере телефона может выдать до 100 миллиардов подходящих :)

    Номер телефона/фамилии в общем случае никак не связаны с заказом.
    По номеру телефона можно определить человека/контрагента, но только в том случае, если номер указан верно.
    По фамилии можно, только если она хранится будет в том же виде, что и загружается, обрезание символов с конца строки будет порождать разного рода ошибки и потом уже будет не понятно, правильно ли определился человек/контрагент по фамилии или все же необходимо вручную выбрать нужного.

    Вы выбрали сильно сложную, кажущуюся простой, задачу: согласование интерфейсов.
  18. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Но задачу решать нужно, и исходные данные таковы, как они есть, от этого не отвертишься. Вопрос остаётся открытым в плане реализации. Отталкиваясь от того, что имеем мой ход мыслей верный?
  19. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Нет, с точки зрения пользователя - ваша мысль понятна. Но с точки зрения БД - это неоднозначность.
  20. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Ну я и предлагаю неоднозначные варианты компенсировать усилиями пользователя. Дать ему возможность выбора, но не из всего спектра договоров, а лишь из удовлетворяющих некоторым условиям.

Поделиться этой страницей