Расширения конфигурации как добавить на основании

1. andrey_name_912 16 13.01.18 11:42 Сейчас в теме
Добрый день коллеги! Подскажите хочу реализовать создание одного документа на основании другого для конфигурация ЗУП 3.1, на основе расширений. Не могу найти как указать что один документ являться основанием для другого, и можно ли это вообще сделать через расширения
user1037537; Legin; native-api; antonius888; bakhrooom; a_lexus_2004; Vilkinson; ВИЛенин; mostostroy-11; onsi; ansonat; Andy_NTG; C0mmander_Alex; KpoTuk; andrey_sag; ledidinka; meowmeow; KoT19; +18 Ответить
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DarkUser 13.01.18 16:36 Сейчас в теме
Можно, запросто.

1. В расширении в разделе Общие -> Общие команды, создаете новую команду. Группу у команды указываете "Командная панель формы. Создать на основании". Тип параметра команды: Ссылки тех документов, в которых появится новая строка в подменю ВводаНаОсновании. Режим использования параметра - одиночный.
2. В модуле команды в процедуре ОбработкаКоманды пишите код, который будет выводить новый документ. Что то типа:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
		
	СтрДанные = Новый Структура("Основание", ПараметрКоманды);
	ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", СтрДанные);
	
	ОткрытьФорму("Документ.Доверенность.ФормаОбъекта", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
	
КонецПроцедуры
Показать


3. Для того, что бы новая команда из расширения стала доступна пользователям, в расширении надо захватить или создать новую роль, и вклчить в неё созданную вами на первом шаге команду.
4. При необходимости включить команду в нужную подсистему.
5. Для того что бы документ, который вы создаете на основании правильно заполнялся, возможно потребуется захватить его в расширении и поправить в модуле Объекта процедуру ОбработкаЗаполнения. Старайтесь использовать типовые функции заполнения документов.

3. Профит. В меню нужного вам документа появится новая команда ввода на основании.
Прикрепленные файлы:
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; +86 Ответить
3. andrey_name_912 16 18.01.18 17:52 Сейчас в теме
4. tsatsur 46 28.09.18 16:06 Сейчас в теме
(2)
3. Профит. В меню нужного вам документа появится новая команда ввода на основании.


Большое спасибо за пример!
Но чтобы добавилась кнопка нужно еще одно действие, по крайней мере на конфигурации КА 2.4.
В модуле менеджера документа из которого создаётся документ на основании добавить:

&После("ДобавитьКомандыСозданияНаОсновании")
Процедура x_ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры)
	Документы.<нужный документ>.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры


А еще есть обработка "Связанные документы" в которой добавленный документ тоже не появляется. Как это побороть в расширении?:) Если найду - отпишусь.
user1158788; native-api; foal; akmich; Vida; Smollsan; JohnConnor; ruslan_ozu; +8 Ответить
5. bmk74 237 28.09.18 16:47 Сейчас в теме
(4)А что искать то, "Критерии Отбора" -> "СвязанныеДокументы", там галочку поставить надо будет
6. user792443 11.10.18 11:25 Сейчас в теме
(5) Можете, пожалуйста, поподробней?)
7. user792443 11.10.18 11:35 Сейчас в теме
(6)Нашел, галки стоят. В связанных документах ничего(
8. user792443 11.10.18 11:43 Сейчас в теме
(7)Нашел, состав не меняется. Ругается на разные галки с расширяемой конфигурацией
13. belovo3000 42 13.12.18 07:35 Сейчас в теме
(4)
Все очень просто!

В самом документе в модуле менеджера добавляем процедуру:

Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	ВариантыОтчетовУТПереопределяемый.ДобавитьКомандуСтруктураПодчиненности(КомандыОтчетов);
КонецПроцедуры


Затем помещаем в расширение общий модуль "ВариантыОтчетовПереопределяемый", в котором прописывает следующее:

&После("ОпределитьОбъектыСКомандамиОтчетов")
Процедура Альфа_ОпределитьОбъектыСКомандамиОтчетов(Объекты) Экспорт
	

   Объекты.Добавить(Метаданные.Документы.НарядНаВыполнениеРабот);
	
	
КонецПроцедуры


после этого:

Находим общую форму "СтруктураПодчиненности" помещаем ее в расширение,

Создаем Функцию и процедуру:

1).

&Вместо("ОбъектыПоКритериюОтбора")
Функция Альфа_ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора)
	
	Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора))  Тогда
		Возврат Неопределено;
	КонецЕсли;
		
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	               |	СвязанныеДокументы.Ссылка КАК Ссылка
	               |ИЗ
	               |	КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СвязанныеДокументы
	               |
	               |ОБЪЕДИНИТЬ ВСЕ
	               |
	               |ВЫБРАТЬ
	               |	НарядНаВыполнениеРабот.Ссылка
	               |ИЗ
	               |	Документ.НарядНаВыполнениеРабот КАК НарядНаВыполнениеРабот
	               |ГДЕ
	               |	НарядНаВыполнениеРабот.Заказ = &ЗначениеКритерияОтбора
	               |
	               |ОБЪЕДИНИТЬ ВСЕ
	               |
	               |ВЫБРАТЬ
	               |	НарядНаВыполнениеРабот.Ссылка
	               |ИЗ
	               |	Документ.НарядНаВыполнениеРабот КАК НарядНаВыполнениеРабот
	               |ГДЕ
	               |	НарядНаВыполнениеРабот.ДокументОснование = &ЗначениеКритерияОтбора";
	
	Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ЗначениеКритерияОтбора);
	Возврат Запрос.Выполнить().Выгрузить();
	
КонецФункции
Показать


2).

&Вместо("ВывестиРодительскиеОбъекты")
Процедура Альфа_ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель)

	СтрокиДерева = ДеревоРодитель.ПолучитьЭлементы();
	МетаданныеОбъекта = ТекущийОбъект.Метаданные();
	СписокРеквизитов    = Новый СписокЗначений;
	
	Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
		Если НЕ ТипЗнч(ТекущийОбъект)= Тип("ДокументСсылка.НарядНаВыполнениеРабот") Тогда
		Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
			Продолжить;
		КонецЕсли;
	Иначе
		Если Реквизит.Имя <> "ДокументОснование" И Реквизит.Имя <> "Заказ" Тогда
			Продолжить;
		КонецЕсли;
		
	КонецЕсли;
		Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл
			
			МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип);
			Если МетаданныеРеквизита = Неопределено Тогда
				Продолжить;
			КонецЕсли;
			Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеРеквизита) 
				Или Не ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда
				Продолжить;
			КонецЕсли;
			Если Не Метаданные.Документы.Содержит(МетаданныеРеквизита)
				И Не Метаданные.Справочники.Содержит(МетаданныеРеквизита)
				И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеРеквизита) Тогда
				Продолжить;
			КонецЕсли;
				
			ЗначениеРеквизита = ТекущийОбъект[Реквизит.Имя];
			Если ЗначениеЗаполнено(ЗначениеРеквизита)
				И ТипЗнч(ЗначениеРеквизита) = ТекущийТип
				И ЗначениеРеквизита <> ТекущийОбъект
				И СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) = Неопределено Тогда
				
				ЯвляетсяДокументом  = ОбщегоНазначения.ЭтоДокумент(МетаданныеРеквизита);
				
				Если ЯвляетсяДокументом Тогда
					СписокРеквизитов.Добавить(ЗначениеРеквизита,
						Формат(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеРеквизита, "Дата", Истина), "ДЛФ=DT"));
				Иначе
					СписокРеквизитов.Добавить(ЗначениеРеквизита, Дата(1,1,1));
				КонецЕсли;
				
			КонецЕсли;
		КонецЦикла;
		
	КонецЦикла;

	Для Каждого ТЧ Из МетаданныеОбъекта.ТабличныеЧасти Цикл
		
		ИменаРеквизитов = "";
		СодержимоеТЧ = ТекущийОбъект[ТЧ.Имя].Выгрузить();
		Для Каждого Реквизит Из ТЧ.Реквизиты Цикл

			Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
				Продолжить;
			КонецЕсли;
				
			Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл
				
				МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип);
				Если МетаданныеРеквизита = Неопределено Тогда
					Продолжить;
				КонецЕсли;
				Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеРеквизита) 
					Или Не ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда
					Продолжить;
				КонецЕсли;
				
				Если Не Метаданные.Документы.Содержит(МетаданныеРеквизита)
					И Не Метаданные.Справочники.Содержит(МетаданныеРеквизита)
					И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеРеквизита) Тогда
					Продолжить;
				КонецЕсли;
				
				ИменаРеквизитов = ИменаРеквизитов + ?(ИменаРеквизитов = "", "", ", ") + Реквизит.Имя;
				Прервать;
					
			КонецЦикла;
			
		КонецЦикла;

		СодержимоеТЧ.Свернуть(ИменаРеквизитов);
		Для Каждого КолонкаТЧ Из СодержимоеТЧ.Колонки Цикл

			Для Каждого СтрокаТЧ Из СодержимоеТЧ Цикл

				ЗначениеРеквизита = СтрокаТЧ[КолонкаТЧ.Имя];
				МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипЗнч(ЗначениеРеквизита));
				Если МетаданныеЗначения = Неопределено Тогда
					Продолжить;
				КонецЕсли;
				Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеЗначения) 
					Или Не ПравоДоступа("Чтение", МетаданныеЗначения) Тогда
					Продолжить;
				КонецЕсли;
				Если ЗначениеРеквизита = ТекущийОбъект
					Или СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) <> Неопределено Тогда
					Продолжить;
				КонецЕсли;
				
				ЯвляетсяДокументом  = ОбщегоНазначения.ЭтоДокумент(МетаданныеЗначения);
				Если Не ЯвляетсяДокументом И Не Метаданные.Справочники.Содержит(МетаданныеЗначения)
					И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеЗначения) Тогда
					Продолжить;
				КонецЕсли;
				
				Если ЯвляетсяДокументом Тогда
					СписокРеквизитов.Добавить(ЗначениеРеквизита,
						Формат(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеРеквизита, "Дата", Истина), "ДЛФ=DT"));
				Иначе
					СписокРеквизитов.Добавить(ЗначениеРеквизита, Дата(1,1,1));
				КонецЕсли;
				
			КонецЦикла;
		КонецЦикла;
	КонецЦикла;

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

3).

В самой форме везде где есть Ссылка на документ в составе проставляем галочку на свой документ


И все работает)

Сори за формат, не нашел как раскрасить
Прикрепленные файлы:
user1158788; spamyda; SamHinkie; C0mmander_Alex; PhoenixAOD; 1Cappldev; +6 Ответить
14. belovo3000 42 13.12.18 08:57 Сейчас в теме
(13) Забыл еще про одну процедуру в модуле формы самописного документа

&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    
    ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
    
КонецПроцедуры
22. 1Cappldev 17.11.19 12:40 Сейчас в теме
(13)Добрый день!
Воспользовался вашим примером, спасибо за подробное описание! Подскажите пожалуйста, какой тип знач у вас содержится в реквизите "заказ", дело в том, что если я вывожу дерево связанных документов из подчиненного самописного документа, все ок, дерево формируется должного вида. При попытке вывести отчет из типового документа конфигурации который является "ДокументомОснованием" для самописного подчиненного, код падает с ошибкой

{ОбщаяФорма.СтруктураПодчиненности.Форма(129)}: Значение не является значением объектного типа (Метаданные)
МетаданныеОбъекта = СтрокаДерева.Ссылка.Метаданные();
23. 1Cappldev 18.11.19 07:08 Сейчас в теме
(22)
На верном пути, в переменной СтрокаДерева.Ссылка - неопределенно, отладчик мне в помощь))
26. aag1985 05.01.20 14:58 Сейчас в теме
(23)Доброго времени суток. С наступившим новым годом всех!!! подскажите как удалось решить проблему??? Я столкнулся ещё и с невозможностью добавления своего документа в ДеревоПодчиненныеОбъекты.Ссылка и ДеревоРодительскиеОбъекты.Ссылка.
Конфигурация БП 3.0.74.58 платформа 8.3.16.1063
Прикрепленные файлы:
27. excess713 20.03.20 08:36 Сейчас в теме
(26)
невозможностью добавления своего документа в ДеревоПодчиненныеОбъекты.Ссылка

Та же самая проблема, Вам удалось решить или найти обходной вариант?
38. Westbound 01.08.23 15:44 Сейчас в теме
(27)
пришлось не на шутку извратиться.
Программным образом добавил 4 реквизита на форму вместо следующих:
ОсновнойОбъект
ИсходныйОбъект
ДеревоПодчиненныеОбъекты
ДеревоРодительскиеОбъекты

Назвал их так же, только в конце приписку "Расширенный", чтобы отличать легко было:

МассивРеквизитов = Новый Массив;
	МассивТипов = Новый Массив;
	МассивТипов.Добавить(Документы.ТипВсеСсылки());
	МассивТипов.Добавить(Справочники.ТипВсеСсылки());
	МассивТипов.Добавить(ПланыВидовХарактеристик.ТипВсеСсылки());
	ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
	МассивТипаВыбора = Новый Массив;
	МассивТипаВыбора.Добавить(Тип("ДеревоЗначений"));
	ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора);
	ИмяДЗ = "ДеревоПодчиненныеОбъектыРасширенный";
	МассивРеквизитов.Добавить(Новый РеквизитФормы(ИмяДЗ, ОписаниеТипаВыбора));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Представление", ОбщегоНазначения.ОписаниеТипаСтрока(0), ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("СуммаДокумента", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2), ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Валюта", ОбщегоНазначения.ОписаниеТипаСтрока(0), ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Ссылка", ОписаниеТипов, ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Проведен", Новый ОписаниеТипов("Булево"), ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("ПометкаУдаления", Новый ОписаниеТипов("Булево"), ИмяДЗ));
	ИмяДЗ = "ДеревоРодительскиеОбъектыРасширенный";
	МассивРеквизитов.Добавить(Новый РеквизитФормы(ИмяДЗ, ОписаниеТипаВыбора));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Представление", ОбщегоНазначения.ОписаниеТипаСтрока(0), ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("СуммаДокумента", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2), ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Валюта", ОбщегоНазначения.ОписаниеТипаСтрока(0), ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Ссылка", ОписаниеТипов, ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Проведен", Новый ОписаниеТипов("Булево"), ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("ПометкаУдаления", Новый ОписаниеТипов("Булево"), ИмяДЗ));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("ОсновнойОбъектРасширенный", ОписаниеТипов));
	МассивРеквизитов.Добавить(Новый РеквизитФормы("ИсходныйОбъектРасширенный", ОписаниеТипов));
	ИзменитьРеквизиты(МассивРеквизитов);
Показать


Это я выполнял перед ПриСозданииНаСервере.
А потом все остальные функции и процедуры заключил в ИзменениеИКонтроль (можно просто Вместо, чтобы не заморачиваться) и там переделал типовые переменные типа ОсновнойОбъект в ОсновнойОбъектРасширенный.
Разумеется, в этом случае уже мой новый тип документа виден программой и все заработало. Сделал чисто принципиально, чтобы результата через расширение добиться.
35. Serg O. 270 23.12.22 10:38 Сейчас в теме
(13)
СтруктураПодчиненности

ахренеть как всё просто... не просто одна [v] галочка, а в 5 модулях подобавлять разного
спасибо ... никогда бы до такого извращения не догадался сам
15. InsideIT 1 10.01.19 21:55 Сейчас в теме
(4) в последних версиях БСП достаточно добавить только этот код в модуль менеджера, команду создавать не нужно! Иначе появляется вторая кнопка "Создать на основании"
akmich; Almaz; Ryo3000; BarsukM; NikemanNioxon93; tsatsur; +6 Ответить
19. max_zhilin 04.09.19 18:27 Сейчас в теме
(4)
В модуле менеджера документа из которого создаётся документ на основании добавить:


На самом деле правильней добавлять в модуль локализации. Так не придется править модуль при обновлении.

В процедуре:
<ВидДокументаИсточника>Локализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);

вызываем
Документы.<ВидДокументаПриемника>.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);

При этом в модуле менеджера документа-приемника процедура "ДобавитьКомандуСоздатьНаОсновании" должна существовать.
Собственно, это единственное, что нужно сделать для того, чтобы ввод на основании появился и форма нового документа открывалась. Никакие команды городить не нужно. Остается только прописать обработку заполнения в документе-получателе.
akmich; chinkovs; Egovigor; BarsukM; vadim.semyonov.rzn; cfifgoth; +6 Ответить
9. Letos 267 11.10.18 15:20 Сейчас в теме
(2)
СтрДанные = Новый Структура("Основание", ПараметрКоманды);


Сделал всё по вашему совету, документ открывается, но ничего не заполняется, более того в процедуре "ОбработкаЗаполнения" (то что захвачено в расширение) переменная ДанныеЗаполнения равно НЕОПРЕДЕЛЕНО. Что может быть не так?
Krotov_Valery; user1916684; verunca; smirnovserg.s@gmail.com; acanta; +5 Ответить
18. l4h 24.05.19 16:05 Сейчас в теме
30. petroglif 26.05.21 15:26 Сейчас в теме
(2) а как обработку создаваемого документа передать параметры?

Например, ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка), в ДанныеЗаполнения?

у меня там защита стоит создаваемого документа. если нет нужны параметров, то система отказывается создавать документ
31. user970589 11 07.10.21 13:01 Сейчас в теме
(2)
процедуру ОбработкаЗаполнения. Старайтесь использовать типовые функции заполнения документов.

а почему именно ОбработкаЗаполнения? Есть же Процедура ЗаполнитьНаОсновании. Разве не она должна запускать данные в документ?
33. Touch_Of_Soul 30 02.09.22 07:34 Сейчас в теме
(2) Как Вы добавили картинку к доверенности? Хочу так же добавить ко всем документам расширения. И еще если делать так
Документ расширение и для него является основанием типовой документ счет тогда процедура ОбработкаЗаполнения не работает , а если документ расширения вводится на основание типового счет все ок, так как в документе закладка ввод на основание указан этот типовой документ. А в документах расширения нельзя в вод на основание указать в разделе является основание для типовой документ. Как это обойти. Заранее спасибо.
10. Letos 267 11.10.18 16:54 Сейчас в теме
Заработало. =) Спасибо.
11. eretic 17.11.18 12:36 Сейчас в теме
12. demidenko.d 28.11.18 14:18 Сейчас в теме
(11) У меня получилось передать следующим образом:

Модуль команды:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	
	ЗначенияЗаполнения = ПараметрКоманды;
	ОткрытьФорму("Документ.НакладнаяНаВнутреннееПеремещениеОС2.Форма.ФормаДокумента",Новый структура("Основание", ЗначенияЗаполнения));
	
КонецПроцедуры
Показать


Модуль объекта документа:
&Вместо("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

	Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ИнвентаризацияОС") Тогда

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

КонецПроцедуры

Показать
user655369_uhova_natalya; A4ymet; onsi; +3 Ответить
16. Tangram 160 09.02.19 19:31 Сейчас в теме
вопрос в тему, но у меня ситуация чуть другая:

УТ 11.4, расширение.
В расширении новый справочник и два новых документа. Все объекты самописные, только добавлял навеску чтобы использовать команду "Изменить выделенные".
Вся эта фигня живет в одной новой подсистеме.

Хочу сделать ввод документов на основании справочника.
Ввод на основании поставил.
Вижу в документах что они вводятся на основании справочника.
В справочнике вижу, что на основании него вводятся документы.
В Конфигураторе в форме списка справочника подменю "Ввести на основании" есть. В нем два моих документа есть.

В режиме Предприятия кнопки "Ввести на основании" нет!
в "Еще" пункта тоже нет, в контекстном меню нет.

Во всех трех объектах стоит галочка "Использовать стандартные команды".
Куда копать? куда пропадает подменю "Ввести на основании"?
25. mp40 12 27.11.19 10:05 Сейчас в теме
(16) Аналогичная проблема, как создать на основании новых документов расширения?
17. hanio 55 24.05.19 08:22 Сейчас в теме
И примерно в ту же тему а как сделать в расширении чтобы была видна кнопка дебет-кредит?
20. XelOla 18 28.09.19 17:26 Сейчас в теме
Подскажите пожалуйста,
как заменить процедуру ввода на основании, которая уже есть в конигурации на процедуру в расширении.
21. XelOla 18 29.09.19 14:40 Сейчас в теме
Т е ввод на основании вшит в конфигурацию, и просто данныезаполнения это ссылка или массив ссылок на документы, а мне запретить ввод на основании из списка и вводить на основании строки документа.
24. pridecom 810 20.11.19 13:01 Сейчас в теме
А как новый документ из расширения пришить к структуре подчиненности
или хотя бы в типовой реквизит документа основания добавить новый документ из расширения?
28. angabanga5 30.07.20 15:10 Сейчас в теме
Боже, какая лажа из-за одной конпки. что нельзя было сделать как в типовой конфе одним нажатием? (это к 1с претензия)
29. mikl79 119 28.08.20 13:37 Сейчас в теме
По поводу Связанных документов, в КА 2.4 я связал Заказ клиента с Перемещением товаров просто добавив в документе "Перемещение товаров" в реквизите "Документ-основание" тип "ДокументСсылка.ЗаказКлиента".

Да, пришлось снимать ключ в конфе, но может и через расширение можно.

Зато в "Связанные документы" все видно и не надо ничего выдумывать.
32. SGordon1 24.05.22 15:55 Сейчас в теме
А с модифицированностью все хорошо, взводится сама?
34. 028 07.11.22 15:54 Сейчас в теме
Добрый день можете подсказать что не так
вот мой код:
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда

Организация = ДанныеЗаполнения.Организация;
Контрагент = ДанныеЗаполнения.Контрагент;
СуммаДок = ДанныеЗаполнения.СуммаДокумента;
Комментарий = "Документ заполнен на основании РеализацияТоваровУслуг";

КонецЕсли;

КонецПроцедуры

в основной конф модуле документа СписаниеСРасчетногоСчета пусто поэтому в расширении прописал процедуру без аннотации, но эта процедура не срабатывает.
Конф типовая не редактируется.
36. Serg O. 270 29.12.22 17:29 Сейчас в теме
(34) в ДанныеЗаполнения - передаётся не ссылка на документ, а Структура
// см. выше в коде
СтрДанные = Новый Структура("расш_Основание", ПараметрКоманды);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", СтрДанные);

Поэтому надо сделать переопределение для "своей" переменной "расш_Основание" (из любого расширения)

  
// +++ нужно другое условие  - для проверки структуры и наличия в структуре "Основание"
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
       Если ДанныеЗаполнения.Свойство("расш_Основание") Тогда
            ДанныеЗаполнения = ДанныеЗаполнения.расш_Основание; // !!! меняем для стандартной обработки !!!
       КонецЕсли;
КонецЕсли;
// ---)
              Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
Показать


и ещё ... в расширении процедуру надо вызывать Перед основной ...
 &Перед("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
37. grigr 214 17.05.23 15:17 Сейчас в теме
Может в более новых релизах все проще заработало достаточно просто:

в модуле менеджера документа основания добавил процедуру
&Вместо("ДобавитьКомандыСозданияНаОсновании")
Процедура Расш1_ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры)
	ОбъектыВводимыеНаОсновании = Новый Массив();
	ОбъектыВводимыеНаОсновании.Добавить(Документы.ПриходныйКассовыйОрдер); // тут список документов всех
	
	Для Каждого ОбъектВводимыйНаОсновании Из ОбъектыВводимыеНаОсновании Цикл
		ОбъектВводимыйНаОсновании.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	КонецЦикла;
КонецПроцедуры
Показать


в модуле объекта вводимого на основании документа добавил
&После("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Чек") Тогда
        Организация     = ДанныеЗаполнения.Организация;
        // и тд
    КонецЕсли;
КонецПроцедуры
Показать
Logarifm_Andre; +1 Ответить
39. Logarifm_Andre 13 09.12.23 12:17 Сейчас в теме
Да, подтверждаю, работает на сегодняшний момент.
Даже в отраслевых решениях, т.к. БСП разработчик внедряет в свои документы корректно.
40. ketr 126 30.05.24 15:30 Сейчас в теме
Всё супер, но как быть с галочкой "безопасный режим"?
ОбработкаЗаполнения не отрабатывает из расширения которая
А снять галочку нельзя, т.к. это условия 1С Фреш
41. ketr 126 30.05.24 16:46 Сейчас в теме
(40) понял, нашел решение
&НаСервере
Процедура ДСПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	Если Параметры.ЗначенияЗаполнения.Свойство("Основание") Тогда
		
		ЗаполнитьПоСчету(Параметры.ЗначенияЗаполнения.Основание);
		
	КонецЕсли;	
	
КонецПроцедуры
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот