Здравствуйте
Имеется конфигурация Розница 1.0 Платформа 8.2
Документ ВводОстатковПоНакопительнымСкидкам
В документе отсутствует кнопка подбора информационных карт. Все делается через "+". "+" - очень неудобно сделано, когда клиентов очень много и по всем необходимо внести сумму накопления, также форма выбора при выборе информационной карты закрывается(это было исправлено).
В других документах при выборе позиции из подбора она добавляется в табличную часть под номером 1, выбираешь 2 позицию (подбор не закрывается) и в табличной части появляется строчка 2.
Подскажите пожалуйста как это можно организовать в документе ВводОстатковПоНакопительнымСкидкам при нажатии на "+"
---
vertkov2010,

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

    Процедура ОстаткиДисконтнаяКартаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Если Не ЗначениеЗаполнено(Элемент.Значение) Тогда
    Элемент.Значение = ВыбранноеЗначение.Получить(0);
    Иначе
    Строка = Остатки.Добавить();
    Строка.ДисконтнаяКарта = ВыбранноеЗначение.Получить(0);
    КонецЕсли;
    КонецПроцедуры
```

не забудьте определить процедуру ОстаткиДисконтнаяКартаОбработкаВыбора для соответствующего события поля ДисконтнаяКарта
---
Получается нашел что вызывается при нажатии на "+". т.е УправлениеИнформационнымиКартами.НачалоВыбораИнформационнойКарты(Элемент, Перечисления.ТипыИнформационныхКарт.Дисконтная, СтандартнаяОбработка);
---
ЗакрыватьПриВыборе = Ложь - у меня используется. Окно подбора не закрывается, но и 2,3,4 и т.д строчки не создаются при выборе разных карт в подборе
---
вот процедура, которую нашел
Процедура НачалоВыбораИнформационнойКарты(ЭлементФормы, ТипКарты, СтандартнаяОбработка) Экспорт

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

    ФормаВыбора = Справочники.ИнформационныеКарты.ПолучитьФормуВыбора(, ЭлементФормы);
    ФормаВыбора.ПараметрВыборГруппИЭлементов = ЭлементФормы.ВыборГруппИЭлементов;

    Если ТипЗнч(ТипКарты) = Тип("СписокЗначений") Тогда
        ФормаВыбора.СправочникСписок.Отбор.ТипКарты.Использование = Истина;
        ФормаВыбора.СправочникСписок.Отбор.ТипКарты.ВидСравнения = ВидСравнения.ВСписке;
        ФормаВыбора.СправочникСписок.Отбор.ТипКарты.Значение = ТипКарты;

    ИначеЕсли ТипЗнч(ТипКарты) = Тип("Массив") Тогда
        СписокТиповКарт = Новый СписокЗначений();
        СписокТиповКарт.ЗагрузитьЗначения(ТипКарты);
        ФормаВыбора.МножественныйВыбор = Истина;

        ФормаВыбора.СправочникСписок.Отбор.ТипКарты.Использование = Истина;
        ФормаВыбора.СправочникСписок.Отбор.ТипКарты.ВидСравнения = ВидСравнения.ВСписке;
        ФормаВыбора.СправочникСписок.Отбор.ТипКарты.Значение = СписокТиповКарт;

    Иначе
        ФормаВыбора.СправочникСписок.Отбор.ТипКарты.Установить(ТипКарты);

    КонецЕсли;

    ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.ТипКарты.Доступность = Ложь;
    Если НЕ ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущаяСтрока = Неопределено Тогда
        ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущаяСтрока = ЭлементФормы.Значение;
    КонецЕсли;
          ФормаВыбора.РежимВыбора = Истина;
        ФормаВыбора.ЗакрыватьПриВыборе = Ложь;

    ФормаВыбора.Открыть();

КонецПроцедуры // НачалоВыбораИнформационнойКарты()
---
Переделав код на:

СтандартнаяОбработка = Ложь;
СтрокаОстатки = Остатки.Добавить();
СтрокаОстатки.Остатки = ВыбранноеЗначение;
ЭлементыФормы.Остатки.ТекущаяСтрока = СтрокаОстатки;

При выборе 1,2,3 значений пишет:
{Документ.ВводОстатковПоНакопительнымСкидкам.Форма.ФормаДокумента.Форма(566)}: Поле объекта не обнаружено (Остатки)

СтрокаОстатки.Остатки = ВыбранноеЗначение;

И в табличную часть попадают пустые строчки и также появляется та ошибка
---
Создал новую тему здесь так как на forum.mista.ru никто не может ничего подсказать
---
Зачем вам программное заполнение тогда? Уберите всякий код просто - нажали Ins - появилась новая строка. Встаем на дисконт - провели карточку (автоматом должен туда улететь код карты + Enter если оборудование у вас правильно настроено).
---
insurgut, мне необходимо заполнить документ ВводОстатковПоНакопительнымСкидкам накопленными суммами у каждого контрагента. причем тут ввод новой карты
---
vertkov2010, сорри, я думал вы формы подпора открываете - и карту проводите :)

Слушайте - ну в рамках стандартного подбора вам ничего не мешает удерживая клавиши Shift или Ctrl выделить сразу несколько дисконтных карт и нажать кнопку Выбрать. Все должно заполнится как надо.
---
Нужно ковырять процедуру - ОбработкаВыбора, там прописан механизм добавления строк в ТЧ.
---
olbu, вот в чем как раз и проблема этой процедуры нет, так как я хочу вызвать форму выбора, а там нет ОбработкиВыбора. Я и обратился с помощью помогите мне ее написать , так как все мои попытки плохи
---
vertkov2010,
К сожалению "конфигурация Розница 1.0" - у меня нет... Не смогу Вам помочь более предметно... тк нужно смотреть на модули и при создании/редактировании кода тестировать и выявлять ошибки...
---
Насколько я понял, как раз у этого дока и нет стандартного подбора...
---
olbu, да ты прав
---
вопрос еще актуальный
---
vertkov2010,

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

    Процедура ОстаткиДисконтнаяКартаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Если Не ЗначениеЗаполнено(Элемент.Значение) Тогда
    Элемент.Значение = ВыбранноеЗначение.Получить(0);
    Иначе
    Строка = Остатки.Добавить();
    Строка.ДисконтнаяКарта = ВыбранноеЗначение.Получить(0);
    КонецЕсли;
    КонецПроцедуры
```

не забудьте определить процедуру ОстаткиДисконтнаяКартаОбработкаВыбора для соответствующего события поля ДисконтнаяКарта