Расширения конфигурации как добавить на основании
По теме из базы знаний
- Добавление таблицы значения с помощью дополнительных реквизитов и расширения конфигурации. На примере Документооборот 2.1.6.8
- Расширения конфигураций 1С: учимся перехватывать методы
- Этюды по программированию. Хитрости создания расширений для конфигураций на БСП. Часть 1.
- Дополнительные расходы на основе перемещения запасов в УНФ (пошаговая разработка расширения конфигурации)
- Этюды по программированию: Хитрости создания расширений для конфигураций на БСП. Часть 3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Можно, запросто.
1. В расширении в разделе Общие -> Общие команды, создаете новую команду. Группу у команды указываете "Командная панель формы. Создать на основании". Тип параметра команды: Ссылки тех документов, в которых появится новая строка в подменю ВводаНаОсновании. Режим использования параметра - одиночный.
2. В модуле команды в процедуре ОбработкаКоманды пишите код, который будет выводить новый документ. Что то типа:
3. Для того, что бы новая команда из расширения стала доступна пользователям, в расширении надо захватить или создать новую роль, и вклчить в неё созданную вами на первом шаге команду.
4. При необходимости включить команду в нужную подсистему.
5. Для того что бы документ, который вы создаете на основании правильно заполнялся, возможно потребуется захватить его в расширении и поправить в модуле Объекта процедуру ОбработкаЗаполнения. Старайтесь использовать типовые функции заполнения документов.
3. Профит. В меню нужного вам документа появится новая команда ввода на основании.
1. В расширении в разделе Общие -> Общие команды, создаете новую команду. Группу у команды указываете "Командная панель формы. Создать на основании". Тип параметра команды: Ссылки тех документов, в которых появится новая строка в подменю ВводаНаОсновании. Режим использования параметра - одиночный.
2. В модуле команды в процедуре ОбработкаКоманды пишите код, который будет выводить новый документ. Что то типа:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
СтрДанные = Новый Структура("Основание", ПараметрКоманды);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", СтрДанные);
ОткрытьФорму("Документ.Доверенность.ФормаОбъекта", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
КонецПроцедуры
Показать3. Для того, что бы новая команда из расширения стала доступна пользователям, в расширении надо захватить или создать новую роль, и вклчить в неё созданную вами на первом шаге команду.
4. При необходимости включить команду в нужную подсистему.
5. Для того что бы документ, который вы создаете на основании правильно заполнялся, возможно потребуется захватить его в расширении и поправить в модуле Объекта процедуру ОбработкаЗаполнения. Старайтесь использовать типовые функции заполнения документов.
3. Профит. В меню нужного вам документа появится новая команда ввода на основании.
Прикрепленные файлы:

mirrr; Natain14; user1831466; andy3626603; Bessondo; AloneWolf; if74; Apiar; CratosX; Yan_Malyakov; AndreySchel; user1037537; user1158788; denis.shirobokov; Legin; user1961285; Redempty; user1173399; native-api; Lacrimosa0000; beldieff; mihco; neo-ti; Anaconda89; user1165032; igvlg; justaria; user686589_sev_s; Goggy; user613191_olgargor; zastep; VictorRGB2; a-m-gv; AndE; de0nis; Aksik97; ВИЛенин; macho210386; Izumov; tgr123; criptid; angel4evil; erazh; VooDOOPRo; Zlaya-Ferio; user974746; MikaPikina; Naumov; kimskiysanya; SotNick; user657734_YGREEN; Virsy; DrAku1a; Antonov.AV; onsi; shusharu; RomanKod; Jeka44; dimma007; FloNes; MonteCriZto; C0mmander_Alex; KpoTuk; maksimkatula; SShipilov; COMPER; meowmeow; fokses; ronval; aag1985; antonsat49; kwazi; vv2; mamonth; johny1987; s0u1; info1ctart; asv_izts; JaneP; Asenka; N!ghtmare; l4h; anuar_medeup; asbc; independ; acanta; insurgut; CnupT; tsatsur; Shida; CXY; fieryfist; andrey_name_912; user705522_constantin_h;
+94
–
Ответить
(2)
Большое спасибо за пример!
Но чтобы добавилась кнопка нужно еще одно действие, по крайней мере на конфигурации КА 2.4.
В модуле менеджера документа из которого создаётся документ на основании добавить:
А еще есть обработка "Связанные документы" в которой добавленный документ тоже не появляется. Как это побороть в расширении?:) Если найду - отпишусь.
3. Профит. В меню нужного вам документа появится новая команда ввода на основании.
Большое спасибо за пример!
Но чтобы добавилась кнопка нужно еще одно действие, по крайней мере на конфигурации КА 2.4.
В модуле менеджера документа из которого создаётся документ на основании добавить:
&После("ДобавитьКомандыСозданияНаОсновании")
Процедура x_ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры)
Документы.<нужный документ>.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
А еще есть обработка "Связанные документы" в которой добавленный документ тоже не появляется. Как это побороть в расширении?:) Если найду - отпишусь.
(4)
Все очень просто!
В самом документе в модуле менеджера добавляем процедуру:
Затем помещаем в расширение общий модуль "ВариантыОтчетовПереопределяемый", в котором прописывает следующее:
после этого:
Находим общую форму "СтруктураПодчиненности" помещаем ее в расширение,
Создаем Функцию и процедуру:
1).
2).
3).
В самой форме везде где есть Ссылка на документ в составе проставляем галочку на свой документ
И все работает)
Сори за формат, не нашел как раскрасить
Все очень просто!
В самом документе в модуле менеджера добавляем процедуру:
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
ВариантыОтчетовУТПереопределяемый.ДобавитьКомандуСтруктураПодчиненности(КомандыОтчетов);
КонецПроцедуры
Затем помещаем в расширение общий модуль "ВариантыОтчетовПереопределяемый", в котором прописывает следующее:
&После("ОпределитьОбъектыСКомандамиОтчетов")
Процедура Альфа_ОпределитьОбъектыСКомандамиОтчетов(Объекты) Экспорт
Объекты.Добавить(Метаданные.Документы.НарядНаВыполнениеРабот);
КонецПроцедуры
после этого:
Находим общую форму "СтруктураПодчиненности" помещаем ее в расширение,
Создаем Функцию и процедуру:
1).
&Вместо("ОбъектыПоКритериюОтбора")
Функция Альфа_ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора)
Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора)) Тогда
Возврат Неопределено;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СвязанныеДокументы.Ссылка КАК Ссылка
|ИЗ
| КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СвязанныеДокументы
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НарядНаВыполнениеРабот.Ссылка
|ИЗ
| Документ.НарядНаВыполнениеРабот КАК НарядНаВыполнениеРабот
|ГДЕ
| НарядНаВыполнениеРабот.Заказ = &ЗначениеКритерияОтбора
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НарядНаВыполнениеРабот.Ссылка
|ИЗ
| Документ.НарядНаВыполнениеРабот КАК НарядНаВыполнениеРабот
|ГДЕ
| НарядНаВыполнениеРабот.ДокументОснование = &ЗначениеКритерияОтбора";
Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ЗначениеКритерияОтбора);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Показать2).
&Вместо("ВывестиРодительскиеОбъекты")
Процедура Альфа_ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель)
СтрокиДерева = ДеревоРодитель.ПолучитьЭлементы();
МетаданныеОбъекта = ТекущийОбъект.Метаданные();
СписокРеквизитов = Новый СписокЗначений;
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
Если НЕ ТипЗнч(ТекущийОбъект)= Тип("ДокументСсылка.НарядНаВыполнениеРабот") Тогда
Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
Продолжить;
КонецЕсли;
Иначе
Если Реквизит.Имя <> "ДокументОснование" И Реквизит.Имя <> "Заказ" Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл
МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип);
Если МетаданныеРеквизита = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеРеквизита)
Или Не ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда
Продолжить;
КонецЕсли;
Если Не Метаданные.Документы.Содержит(МетаданныеРеквизита)
И Не Метаданные.Справочники.Содержит(МетаданныеРеквизита)
И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеРеквизита) Тогда
Продолжить;
КонецЕсли;
ЗначениеРеквизита = ТекущийОбъект[Реквизит.Имя];
Если ЗначениеЗаполнено(ЗначениеРеквизита)
И ТипЗнч(ЗначениеРеквизита) = ТекущийТип
И ЗначениеРеквизита <> ТекущийОбъект
И СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) = Неопределено Тогда
ЯвляетсяДокументом = ОбщегоНазначения.ЭтоДокумент(МетаданныеРеквизита);
Если ЯвляетсяДокументом Тогда
СписокРеквизитов.Добавить(ЗначениеРеквизита,
Формат(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеРеквизита, "Дата", Истина), "ДЛФ=DT"));
Иначе
СписокРеквизитов.Добавить(ЗначениеРеквизита, Дата(1,1,1));
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Для Каждого ТЧ Из МетаданныеОбъекта.ТабличныеЧасти Цикл
ИменаРеквизитов = "";
СодержимоеТЧ = ТекущийОбъект[ТЧ.Имя].Выгрузить();
Для Каждого Реквизит Из ТЧ.Реквизиты Цикл
Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
Продолжить;
КонецЕсли;
Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл
МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип);
Если МетаданныеРеквизита = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеРеквизита)
Или Не ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда
Продолжить;
КонецЕсли;
Если Не Метаданные.Документы.Содержит(МетаданныеРеквизита)
И Не Метаданные.Справочники.Содержит(МетаданныеРеквизита)
И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеРеквизита) Тогда
Продолжить;
КонецЕсли;
ИменаРеквизитов = ИменаРеквизитов + ?(ИменаРеквизитов = "", "", ", ") + Реквизит.Имя;
Прервать;
КонецЦикла;
КонецЦикла;
СодержимоеТЧ.Свернуть(ИменаРеквизитов);
Для Каждого КолонкаТЧ Из СодержимоеТЧ.Колонки Цикл
Для Каждого СтрокаТЧ Из СодержимоеТЧ Цикл
ЗначениеРеквизита = СтрокаТЧ[КолонкаТЧ.Имя];
МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипЗнч(ЗначениеРеквизита));
Если МетаданныеЗначения = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеЗначения)
Или Не ПравоДоступа("Чтение", МетаданныеЗначения) Тогда
Продолжить;
КонецЕсли;
Если ЗначениеРеквизита = ТекущийОбъект
Или СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) <> Неопределено Тогда
Продолжить;
КонецЕсли;
ЯвляетсяДокументом = ОбщегоНазначения.ЭтоДокумент(МетаданныеЗначения);
Если Не ЯвляетсяДокументом И Не Метаданные.Справочники.Содержит(МетаданныеЗначения)
И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеЗначения) Тогда
Продолжить;
КонецЕсли;
Если ЯвляетсяДокументом Тогда
СписокРеквизитов.Добавить(ЗначениеРеквизита,
Формат(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеРеквизита, "Дата", Истина), "ДЛФ=DT"));
Иначе
СписокРеквизитов.Добавить(ЗначениеРеквизита, Дата(1,1,1));
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
СписокРеквизитов.СортироватьПоПредставлению();
Для каждого ЭлементСписка Из СписокРеквизитов Цикл
Выборка = ПолучитьВыборкуПоРеквизитамОбъекта(ЭлементСписка.Значение);
Если Выборка.Следующий() Тогда
СтрокаДерева = ДобавитьСтрокуВДерево(СтрокиДерева, Выборка);
Если НЕ ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, ЭлементСписка.Значение) Тогда
ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, СтрокаДерева);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать3).
В самой форме везде где есть Ссылка на документ в составе проставляем галочку на свой документ
И все работает)
Сори за формат, не нашел как раскрасить
Прикрепленные файлы:

(13)Добрый день!
Воспользовался вашим примером, спасибо за подробное описание! Подскажите пожалуйста, какой тип знач у вас содержится в реквизите "заказ", дело в том, что если я вывожу дерево связанных документов из подчиненного самописного документа, все ок, дерево формируется должного вида. При попытке вывести отчет из типового документа конфигурации который является "ДокументомОснованием" для самописного подчиненного, код падает с ошибкой
{ОбщаяФорма.СтруктураПодчиненности.Форма(129)}: Значение не является значением объектного типа (Метаданные)
МетаданныеОбъекта = СтрокаДерева.Ссылка.Метаданные();
Воспользовался вашим примером, спасибо за подробное описание! Подскажите пожалуйста, какой тип знач у вас содержится в реквизите "заказ", дело в том, что если я вывожу дерево связанных документов из подчиненного самописного документа, все ок, дерево формируется должного вида. При попытке вывести отчет из типового документа конфигурации который является "ДокументомОснованием" для самописного подчиненного, код падает с ошибкой
{ОбщаяФорма.СтруктураПодчиненности.Форма(129)}: Значение не является значением объектного типа (Метаданные)
МетаданныеОбъекта = СтрокаДерева.Ссылка.Метаданные();
(23)Доброго времени суток. С наступившим новым годом всех!!! подскажите как удалось решить проблему??? Я столкнулся ещё и с невозможностью добавления своего документа в ДеревоПодчиненныеОбъекты.Ссылка и ДеревоРодительскиеОбъекты.Ссылка.
Конфигурация БП 3.0.74.58 платформа 8.3.16.1063
Конфигурация БП 3.0.74.58 платформа 8.3.16.1063
Прикрепленные файлы:

(27)
пришлось не на шутку извратиться.
Программным образом добавил 4 реквизита на форму вместо следующих:
ОсновнойОбъект
ИсходныйОбъект
ДеревоПодчиненныеОбъекты
ДеревоРодительскиеОбъекты
Назвал их так же, только в конце приписку "Расширенный", чтобы отличать легко было:
Это я выполнял перед ПриСозданииНаСервере.
А потом все остальные функции и процедуры заключил в ИзменениеИКонтроль (можно просто Вместо, чтобы не заморачиваться) и там переделал типовые переменные типа ОсновнойОбъект в ОсновнойОбъектРасширенный.
Разумеется, в этом случае уже мой новый тип документа виден программой и все заработало. Сделал чисто принципиально, чтобы результата через расширение добиться.
пришлось не на шутку извратиться.
Программным образом добавил 4 реквизита на форму вместо следующих:
ОсновнойОбъект
ИсходныйОбъект
ДеревоПодчиненныеОбъекты
ДеревоРодительскиеОбъекты
Назвал их так же, только в конце приписку "Расширенный", чтобы отличать легко было:
МассивРеквизитов = Новый Массив;
МассивТипов = Новый Массив;
МассивТипов.Добавить(Документы.ТипВсеСсылки());
МассивТипов.Добавить(Справочники.ТипВсеСсылки());
МассивТипов.Добавить(ПланыВидовХарактеристик.ТипВсеСсылки());
ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
МассивТипаВыбора = Новый Массив;
МассивТипаВыбора.Добавить(Тип("ДеревоЗначений"));
ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора);
ИмяДЗ = "ДеревоПодчиненныеОбъектыРасширенный";
МассивРеквизитов.Добавить(Новый РеквизитФормы(ИмяДЗ, ОписаниеТипаВыбора));
МассивРеквизитов.Добавить(Новый РеквизитФормы("Представление", ОбщегоНазначения.ОписаниеТипаСтрока(0), ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("СуммаДокумента", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2), ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("Валюта", ОбщегоНазначения.ОписаниеТипаСтрока(0), ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("Ссылка", ОписаниеТипов, ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("Проведен", Новый ОписаниеТипов("Булево"), ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("ПометкаУдаления", Новый ОписаниеТипов("Булево"), ИмяДЗ));
ИмяДЗ = "ДеревоРодительскиеОбъектыРасширенный";
МассивРеквизитов.Добавить(Новый РеквизитФормы(ИмяДЗ, ОписаниеТипаВыбора));
МассивРеквизитов.Добавить(Новый РеквизитФормы("Представление", ОбщегоНазначения.ОписаниеТипаСтрока(0), ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("СуммаДокумента", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2), ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("Валюта", ОбщегоНазначения.ОписаниеТипаСтрока(0), ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("Ссылка", ОписаниеТипов, ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("Проведен", Новый ОписаниеТипов("Булево"), ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("ПометкаУдаления", Новый ОписаниеТипов("Булево"), ИмяДЗ));
МассивРеквизитов.Добавить(Новый РеквизитФормы("ОсновнойОбъектРасширенный", ОписаниеТипов));
МассивРеквизитов.Добавить(Новый РеквизитФормы("ИсходныйОбъектРасширенный", ОписаниеТипов));
ИзменитьРеквизиты(МассивРеквизитов);
ПоказатьЭто я выполнял перед ПриСозданииНаСервере.
А потом все остальные функции и процедуры заключил в ИзменениеИКонтроль (можно просто Вместо, чтобы не заморачиваться) и там переделал типовые переменные типа ОсновнойОбъект в ОсновнойОбъектРасширенный.
Разумеется, в этом случае уже мой новый тип документа виден программой и все заработало. Сделал чисто принципиально, чтобы результата через расширение добиться.
(4)
На самом деле правильней добавлять в модуль локализации. Так не придется править модуль при обновлении.
В процедуре:
<ВидДокументаИсточника>Локализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
вызываем
Документы.<ВидДокументаПриемника>.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
При этом в модуле менеджера документа-приемника процедура "ДобавитьКомандуСоздатьНаОсновании" должна существовать.
Собственно, это единственное, что нужно сделать для того, чтобы ввод на основании появился и форма нового документа открывалась. Никакие команды городить не нужно. Остается только прописать обработку заполнения в документе-получателе.
В модуле менеджера документа из которого создаётся документ на основании добавить:
На самом деле правильней добавлять в модуль локализации. Так не придется править модуль при обновлении.
В процедуре:
<ВидДокументаИсточника>Локализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
вызываем
Документы.<ВидДокументаПриемника>.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
При этом в модуле менеджера документа-приемника процедура "ДобавитьКомандуСоздатьНаОсновании" должна существовать.
Собственно, это единственное, что нужно сделать для того, чтобы ввод на основании появился и форма нового документа открывалась. Никакие команды городить не нужно. Остается только прописать обработку заполнения в документе-получателе.
(2)
Сделал всё по вашему совету, документ открывается, но ничего не заполняется, более того в процедуре "ОбработкаЗаполнения" (то что захвачено в расширение) переменная ДанныеЗаполнения равно НЕОПРЕДЕЛЕНО. Что может быть не так?
СтрДанные = Новый Структура("Основание", ПараметрКоманды);
Сделал всё по вашему совету, документ открывается, но ничего не заполняется, более того в процедуре "ОбработкаЗаполнения" (то что захвачено в расширение) переменная ДанныеЗаполнения равно НЕОПРЕДЕЛЕНО. Что может быть не так?
(2) а как обработку создаваемого документа передать параметры?
Например, ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка), в ДанныеЗаполнения?
у меня там защита стоит создаваемого документа. если нет нужны параметров, то система отказывается создавать документ
Например, ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка), в ДанныеЗаполнения?
у меня там защита стоит создаваемого документа. если нет нужны параметров, то система отказывается создавать документ
(2) Как Вы добавили картинку к доверенности? Хочу так же добавить ко всем документам расширения. И еще если делать так
Документ расширение и для него является основанием типовой документ счет тогда процедура ОбработкаЗаполнения не работает , а если документ расширения вводится на основание типового счет все ок, так как в документе закладка ввод на основание указан этот типовой документ. А в документах расширения нельзя в вод на основание указать в разделе является основание для типовой документ. Как это обойти. Заранее спасибо.
Документ расширение и для него является основанием типовой документ счет тогда процедура ОбработкаЗаполнения не работает , а если документ расширения вводится на основание типового счет все ок, так как в документе закладка ввод на основание указан этот типовой документ. А в документах расширения нельзя в вод на основание указать в разделе является основание для типовой документ. Как это обойти. Заранее спасибо.
(11) У меня получилось передать следующим образом:
Модуль команды:
Модуль объекта документа:
Модуль команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ЗначенияЗаполнения = ПараметрКоманды;
ОткрытьФорму("Документ.НакладнаяНаВнутреннееПеремещениеОС2.Форма.ФормаДокумента",Новый структура("Основание", ЗначенияЗаполнения));
КонецПроцедуры
ПоказатьМодуль объекта документа:
&Вместо("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ИнвентаризацияОС") Тогда
ИФО = ДанныеЗаполнения.ИФО;
Организация = ДанныеЗаполнения.Организация;
ЦМООтправитель = ДанныеЗаполнения.ЦМО;
Для Каждого ТекСтрокаИнвентаризация Из ДанныеЗаполнения.Инвентаризация Цикл
НоваяСтрока = ОсновныеСредства.Добавить();
НоваяСтрока.ИнвентарныйНомер = ТекСтрокаИнвентаризация.ИнвентарныйНомер;
НоваяСтрока.Количество = ТекСтрокаИнвентаризация.КоличествоБУ;
Новаястрока.КПС = ТекСтрокаИнвентаризация.КФО.Инвентаризация.КПС;
НоваяСтрока.КФО = ТекСтрокаИнвентаризация.КФО.Инвентаризация.КФО;
НоваяСтрока.ОсновноеСредство = ТекСтрокаИнвентаризация.ОсновноеСредство;
НоваяСтрока.Сумма = ТекСтрокаИнвентаризация.СуммаБУ;
НоваяСтрока.Цена = ТекСтрокаИнвентаризация.Цена;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать
вопрос в тему, но у меня ситуация чуть другая:
УТ 11.4, расширение.
В расширении новый справочник и два новых документа. Все объекты самописные, только добавлял навеску чтобы использовать команду "Изменить выделенные".
Вся эта фигня живет в одной новой подсистеме.
Хочу сделать ввод документов на основании справочника.
Ввод на основании поставил.
Вижу в документах что они вводятся на основании справочника.
В справочнике вижу, что на основании него вводятся документы.
В Конфигураторе в форме списка справочника подменю "Ввести на основании" есть. В нем два моих документа есть.
В режиме Предприятия кнопки "Ввести на основании" нет!
в "Еще" пункта тоже нет, в контекстном меню нет.
Во всех трех объектах стоит галочка "Использовать стандартные команды".
Куда копать? куда пропадает подменю "Ввести на основании"?
УТ 11.4, расширение.
В расширении новый справочник и два новых документа. Все объекты самописные, только добавлял навеску чтобы использовать команду "Изменить выделенные".
Вся эта фигня живет в одной новой подсистеме.
Хочу сделать ввод документов на основании справочника.
Ввод на основании поставил.
Вижу в документах что они вводятся на основании справочника.
В справочнике вижу, что на основании него вводятся документы.
В Конфигураторе в форме списка справочника подменю "Ввести на основании" есть. В нем два моих документа есть.
В режиме Предприятия кнопки "Ввести на основании" нет!
в "Еще" пункта тоже нет, в контекстном меню нет.
Во всех трех объектах стоит галочка "Использовать стандартные команды".
Куда копать? куда пропадает подменю "Ввести на основании"?
По поводу Связанных документов, в КА 2.4 я связал Заказ клиента с Перемещением товаров просто добавив в документе "Перемещение товаров" в реквизите "Документ-основание" тип "ДокументСсылка.ЗаказКлиента".
Да, пришлось снимать ключ в конфе, но может и через расширение можно.
Зато в "Связанные документы" все видно и не надо ничего выдумывать.
Да, пришлось снимать ключ в конфе, но может и через расширение можно.
Зато в "Связанные документы" все видно и не надо ничего выдумывать.
Добрый день можете подсказать что не так
вот мой код:
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
Организация = ДанныеЗаполнения.Организация;
Контрагент = ДанныеЗаполнения.Контрагент;
СуммаДок = ДанныеЗаполнения.СуммаДокумента;
Комментарий = "Документ заполнен на основании РеализацияТоваровУслуг";
КонецЕсли;
КонецПроцедуры
в основной конф модуле документа СписаниеСРасчетногоСчета пусто поэтому в расширении прописал процедуру без аннотации, но эта процедура не срабатывает.
Конф типовая не редактируется.
вот мой код:
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
Организация = ДанныеЗаполнения.Организация;
Контрагент = ДанныеЗаполнения.Контрагент;
СуммаДок = ДанныеЗаполнения.СуммаДокумента;
Комментарий = "Документ заполнен на основании РеализацияТоваровУслуг";
КонецЕсли;
КонецПроцедуры
в основной конф модуле документа СписаниеСРасчетногоСчета пусто поэтому в расширении прописал процедуру без аннотации, но эта процедура не срабатывает.
Конф типовая не редактируется.
(34) в ДанныеЗаполнения - передаётся не ссылка на документ, а Структура
// см. выше в коде
СтрДанные = Новый Структура("расш_Основание", ПараметрКоманды);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", СтрДанные);
Поэтому надо сделать переопределение для "своей" переменной "расш_Основание" (из любого расширения)
и ещё ... в расширении процедуру надо вызывать Перед основной ...
// см. выше в коде
СтрДанные = Новый Структура("расш_Основание", ПараметрКоманды);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", СтрДанные);
Поэтому надо сделать переопределение для "своей" переменной "расш_Основание" (из любого расширения)
// +++ нужно другое условие - для проверки структуры и наличия в структуре "Основание"
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
Если ДанныеЗаполнения.Свойство("расш_Основание") Тогда
ДанныеЗаполнения = ДанныеЗаполнения.расш_Основание; // !!! меняем для стандартной обработки !!!
КонецЕсли;
КонецЕсли;
// ---)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
Показатьи ещё ... в расширении процедуру надо вызывать Перед основной ...
&Перед("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Может в более новых релизах все проще заработало достаточно просто:
в модуле менеджера документа основания добавил процедуру
в модуле объекта вводимого на основании документа добавил
в модуле менеджера документа основания добавил процедуру
&Вместо("ДобавитьКомандыСозданияНаОсновании")
Процедура Расш1_ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры)
ОбъектыВводимыеНаОсновании = Новый Массив();
ОбъектыВводимыеНаОсновании.Добавить(Документы.ПриходныйКассовыйОрдер); // тут список документов всех
Для Каждого ОбъектВводимыйНаОсновании Из ОбъектыВводимыеНаОсновании Цикл
ОбъектВводимыйНаОсновании.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецЦикла;
КонецПроцедуры
Показатьв модуле объекта вводимого на основании документа добавил
&После("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Чек") Тогда
Организация = ДанныеЗаполнения.Организация;
// и тд
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот