8.х Добавление элементов в табличную часть документа из справочника.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем mila1231, 10 июн 2016.

  1. TopicStarter Overlay
    mila1231
    Offline

    mila1231

    Регистрация:
    25 июн 2015
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    не могу сообразить есть документ у него табличное поле, один из реквизитов справочник. Нужно при выборе элемент, чтоб
    1 форма выбора справочника не закрывалась
    2 элемент соответственно добавляется в табличную часть..
    1 часть я думала сделать так
    Процедура РемонтнаименованиеНачалоВыбора(Элемент, СтандартнаяОбработка)
    Наименование = Новый СписокЗначений;
    СтандартнаяОбработка = Ложь;
    Форма = Справочники.Справочник_ремонтов.ПолучитьФормуВыбора("ФормаВыбора");
    Форма.МножественныйВыбор = Истина;
    Форма.РежимВыбора = Истина;
    Форма.ЗакрыватьПриВыборе = ложь;
    Форма.Открыть();

    вторую часть
    это цикл с добавлением элемента.. в общем так
    Процедура РемонтнаименованиеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Список = Новый СписокЗначений;
    Для Каждого стр Из ВыбранноеЗначение Цикл
    список.Добавить(Элемент);
    КонецЦикла;

    но по сути наверно не туда иду, т.к тут даже не выбирается ничего, хотя форма справочника не закрывается.
    как сделать, чтоб работало?
  2. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    в типовых подбор не подходит ?
  3. TopicStarter Overlay
    mila1231
    Offline

    mila1231

    Регистрация:
    25 июн 2015
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    можно примером?
  4. Надежда К
    Offline

    Надежда К

    Регистрация:
    17 июн 2016
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Обычное приложение или управляемые формы? Показать или выгрузку прикрепить можешь?
    Последнее редактирование: 17 июн 2016
  5. Надежда К
    Offline

    Надежда К

    Регистрация:
    17 июн 2016
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    На управляемых формах это можно сделать так:
    Предположим, что надо подобрать номенклатуру в документ "ПоступлениеТоваров" в табличную часть "Товары".
    1. Надо создать для спр. "Номенклатура" управляемую форму списка. Добавить текстовый реквизит формы "КомандаПодбора".
    Код модуля формы (не забыть прицепить процедуры к нужным местам на форме, иначе они не будут работать):

    Код:
    &НаКлиенте
    Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
    
       СтандартнаяОбработка = Ложь;
    
       ТипЗначения = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3, ДопустимыйЗнак.Неотрицательный));
    
       Количество = 1;
       Если НЕ ВвестиЗначение(Количество, "Введите количество", ТипЗначения) Тогда
         Возврат;
       КонецЕсли;
    
       СтруктураПодбора = Новый Структура();
       СтруктураПодбора.Вставить("Команда",  КомандаПодбора);
       СтруктураПодбора.Вставить("Номенклатура", Значение);
       СтруктураПодбора.Вставить("Количество",  Количество);
    
       ОповеститьОВыборе(СтруктураПодбора);
    
    КонецПроцедуры
    
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
       КомандаПодбора = Параметры.Команда;
    
    КонецПроцедуры
    2. В документе надо создать команду "Подбор", определить под ней действие "Подбор". В код модуля формы добавить:

    Код:
    &НаКлиенте
    Процедура ДействиеПодбор(ИмяТабличнойЧасти)
    
       Если ИмяТабличнойЧасти = "Товары" Тогда
         Команда = "ПодборВТабличнуюЧастьТовары";
       ИначеЕсли ИмяТабличнойЧасти = "Услуги" Тогда
         Команда = "ПодборВТабличнуюЧастьУслуги";
       КонецЕсли;
       СтруктураПараметровПодбора = Новый Структура();
       СтруктураПараметровПодбора.Вставить("Команда", Команда);
    
       ОткрытьПодборНоменклатуры(ЭтаФорма, СтруктураПараметровПодбора);
     
    КонецПроцедуры //
    
    &НаКлиенте
    Процедура ОткрытьПодборНоменклатуры(ФормаДокумента, СтруктураПараметров) Экспорт
    
       СтруктураПараметров.Вставить("ЗакрыватьПриВыборе", Ложь);
    
       ОткрытьФормуМодально("Справочник.Номенклатура.ФормаВыбора", СтруктураПараметров, ФормаДокумента);
    
    КонецПроцедуры //
    
    &НаКлиенте
    Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
       Перем Команда;
    
       Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
     
         ВыбранноеЗначение.Свойство("Команда", Команда);
    
         Если Команда = "ПодборВТабличнуюЧастьТовары" Тогда
           ОбработкаПодбора("Товары", ВыбранноеЗначение);
         ИначеЕсли Команда = "ПодборВТабличнуюЧастьВозвратнаяТара" Тогда
           ОбработкаПодбора("ВозвратнаяТара", ВыбранноеЗначение);
         ИначеЕсли Команда = "ПодборВТабличнуюЧастьУслуги" Тогда
           ОбработкаПодбора("Услуги", ВыбранноеЗначение);
         КонецЕсли;
       КонецЕсли;
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ОбработкаПодбора(ИмяТабличнойЧасти, ЗначениеВыбора) Экспорт
    
       Перем Номенклатура, Количество;
    
       ЗначениеВыбора.Свойство("Номенклатура",           Номенклатура);
       ЗначениеВыбора.Свойство("Количество",           Количество);
    
      СтрокаТабличнойЧасти = Объект[ИмяТабличнойЧасти].Добавить();
       СтрокаТабличнойЧасти.Номенклатура         = Номенклатура;
       СтрокаТабличнойЧасти.Количество         = Количество;
    
    КонецПроцедуры
    Подбор заполняет только номенклатуру и количество, если надо что-то больше, то надо дальше "накручивать" заполнение нужных реквизитов.
    Последнее редактирование модератором: 17 июн 2016
  6. TopicStarter Overlay
    mila1231
    Offline

    mila1231

    Регистрация:
    25 июн 2015
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Надежда К спасибо, но в моём случае обычное приложение.. формы не управляемые.

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