Задать вопрос
  • Как передать выделенные строки в другой документ при создании на основании?

    @abertysh
    Такую же задачу решал на конфигурации 1С:Комплексная автоматизация 2 (2.5.22.99). Так сложилось что у заказчика помимо такой странной хотелки была хотелка в отношении того после которого пункта в меню ввода на основании должен стоять добавляемый нами пункт. Чтобы решить вопрос с последовательностью пунктов мне пришлось уже ломать БСП через коленку добавляемым расширением. Сам пункт то я добавлял штатно, но перехватывал формирование меню в модуле ПодключаемыеКоманды
    В
    &ИзменениеИКонтроль("ВывестиКоманды")
    Процедура ТДП_ВывестиКоманды(Форма, Команды, ПараметрыРазмещения)

    между
    ПриВыводеКоманд(Форма, ПодключенныеКоманды);
    и
    Команды.Колонки.Удалить("СочетаниеКлавиш");
    был вставлен фрагмент. Приведу окончательный вариант под задачу. Почему окончательный? Сначала был код которым я перемещаю пункт добавленный штатным кодом в нужное место, а потом я осознал что могу в расширении в форме добавить свою команду и переопределить в том же фрагменте штатную кнопку на собственную команду

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

    КонецЕсли;
    Ответ написан
    Комментировать