Вводная: реализовать ввод Заказа поставщику на основании Заказа на Ремонт. решить через расширения конфигурации.
Хочу обратить ваше внимание, не нужно добавлять в расширение критерий отбора, для 8.3.12 нам не доступно добавление\изменение состава критерия. Более того может зависать конфигуратор (столкнулся с последней версией 8.3.14 + ERP)
Разработку рекомендую вести с применением хранилища и для расширения. Иначе устанете потом выгребать чего лишнего включили в расширение при добавлении таких или схожих обектов с составными типами и подобное.
Все текущие типовые решения сейчас идут в режиме совместимости 8.3.12, в прочем и для 8.3.14 (и даже 8.3.15 ничего не поменялось).
Что нам нужно было бы сделать при отказе от поддержки:
1) добавить наш документ в Критерий отбора (состав, реквизиты);
2) в раздел Ввод на основании целевого документа.
И что с целью сохранения поддержки. Как сделать это же для расширения:
1) Добавить реквизит расширения Документы.ЗаказПоставщику._ЗаказНаРемонт (ДокументСсылка.ЗаказНаРемонт)
2) Добавить команду расширения Документы.ЗаказНаРемонт.Команды._СоздатьЗаказПоставщику (группа: форма \ ввести на основании, параметр: ДокументСсылка.ЗаказНаРемонт)
ПараметрыФормы = Новый Структура("Основание", ПараметрКоманды); ОткрытьФорму("Документ.ЗаказПоставщику.ФормаОбъекта", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
3) Переопределить метод модуля объекта Документы.ЗаказПоставщику
&После("ОбработкаЗаполнения")
Процедура лв_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказНаРемонт") Тогда
Хочу обратить ваше внимание, не нужно добавлять в расширение критерий отбора, для 8.3.12 нам не доступно добавление\изменение состава критерия. Более того может зависать конфигуратор (столкнулся с последней версией 8.3.14 + ERP)
Разработку рекомендую вести с применением хранилища и для расширения. Иначе устанете потом выгребать чего лишнего включили в расширение при добавлении таких или схожих обектов с составными типами и подобное.
Все текущие типовые решения сейчас идут в режиме совместимости 8.3.12, в прочем и для 8.3.14 (и даже 8.3.15 ничего не поменялось).
Что нам нужно было бы сделать при отказе от поддержки:
1) добавить наш документ в Критерий отбора (состав, реквизиты);
2) в раздел Ввод на основании целевого документа.
И что с целью сохранения поддержки. Как сделать это же для расширения:
1) Добавить реквизит расширения Документы.ЗаказПоставщику._ЗаказНаРемонт (ДокументСсылка.ЗаказНаРемонт)
2) Добавить команду расширения Документы.ЗаказНаРемонт.Команды._СоздатьЗаказПоставщику (группа: форма \ ввести на основании, параметр: ДокументСсылка.ЗаказНаРемонт)
ПараметрыФормы = Новый Структура("Основание", ПараметрКоманды); ОткрытьФорму("Документ.ЗаказПоставщику.ФормаОбъекта", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
3) Переопределить метод модуля объекта Документы.ЗаказПоставщику
ЗаполнитьДокументНаОснованииЗаказаНаРемонт(ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
4) Переопределить методы общей формы СтруктураПодчиненности
&НаСервере
&Вместо("ВывестиРодительскиеОбъекты")
Процедура _ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель)
// Типовой код, актуально для ERP 2.4.9.91
// делаем примеси для включения реквизитов расширения
СтрокиДерева = ДеревоРодитель.ПолучитьЭлементы();
МетаданныеОбъекта = ТекущийОбъект.Метаданные();
СписокРеквизитов = Новый СписокЗначений;
//(
РасширенныйСостав = Новый Массив;
РасширенныйСостав.Добавить(Метаданные.Документы.ЗаказПоставщику.Реквизиты._ЗаказНаРемонт);
//)
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
//(
Если РасширенныйСостав.Найти(Реквизит) = Неопределено Тогда
//)
Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
Продолжить;
КонецЕсли;
//(
КонецЕсли;
//)
КонецПроцедуры
&НаСервере
&Вместо("ОбъектыПоКритериюОтбора")
Функция _ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора)
Результат = ПродолжитьВызов(ЗначениеКритерияОтбора);
// делаем примеси для включения реквизитов расширения
Если ТипЗнч(ЗначениеКритерияОтбора) = Тип("ДокументСсылка.ЗаказНаРемонт") Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ЗначениеКритерияОтбора);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПоставщику.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|ГДЕ
| ЗаказПоставщику._ЗаказНаРемонт = &ЗначениеКритерияОтбора";
ОбщегоНазначенияКлиентСервер.
ДополнитьТаблицу(Запрос.Выполнить().Выгрузить(), Результат);
КонецЕсли;
Возврат Результат;
КонецФункции
8.3.15.1778 - платформа. Все вроде норма но не записывает Ссылка в НоваяСтрока - Строка ДереваПодчиненные. Т.е. оставляет в неопределено.
ОтветитьУдалитьСкажите, как у вас работает аннотация &Вместо("ВывестиРодительскиеОбъекты")
ОтветитьУдалитьВ режиме совместимости 8.3.12 ?
У меня не перехватывает (
Отбой. всё работает на режиме совместимости 8.3.12
УдалитьВ расширяемой функции "ОбъектыПоКритериюОтбора" также необходимо создать новую таблицу значений и в колонке "Ссылка" объединить типы из обеих таблиц, иначе может не работать с типами данных отсутствующих в критерии отбора.
УдалитьМой код:
&НаСервере
&Вместо("ОбъектыПоКритериюОтбора")
Функция _ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора)
_Результат = ПродолжитьВызов(ЗначениеКритерияОтбора);
_РезультатПоРасширению = Неопределено;
Если ТипЗнч(ЗначениеКритерияОтбора) = Тип("ДокументСсылка.ОтчетОРозничныхПродажах") Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ЗначениеКритерияОтбора);
Запрос.Текст =
"ВЫБРАТЬ
| ПриходныйКассовыйОрдер.Ссылка КАК Ссылка
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
| ПриходныйКассовыйОрдер._ОтчетОРозничныхПродажах = &ЗначениеКритерияОтбора";
_РезультатПоРасширению = Запрос.Выполнить().Выгрузить();
КонецЕсли;
Если _РезультатПоРасширению <> Неопределено Тогда
_ОписаниеТипов = Новый ОписаниеТипов(_Результат.Колонки.Ссылка.ТипЗначения, _РезультатПоРасширению.Колонки.Ссылка.ТипЗначения);
_РезультатОбщий = Новый ТаблицаЗначений;
_РезультатОбщий.Колонки.Добавить("Ссылка", _ОписаниеТипов);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(_Результат , _РезультатОбщий);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(_РезультатПоРасширению, _РезультатОбщий);
_Результат = _РезультатОбщий;
КонецЕсли;
Возврат _Результат;
КонецФункции