ПолучитьОбъект() документа

1. _7445_ 17.04.19 11:33 Сейчас в теме
Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В документов есть реквизит ответственный. Надо что доступность было ложь для всех документов. Через подписка на событии не могла это сделать. По-моему надо создать обработку. Но есть такой вопрос как ПолучитьОбъект() для всех документов. Метаданные.Документы? или через запрос?
Спасибо всем за ранее
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YannikAlx 43 17.04.19 11:43 Сейчас в теме
У вас все-таки трудности не с русским языком, а с логикой. Почему -то очень трудно понять не ваш язык, а то что вы пытаетесь сделать... Причем во всех ваших темах...

Если вам необходимо закрыть доступность Ответственного в документах, лучшим решением будет создание расширения, в котором будут новые формы для ваших документов с запроещенным для изменения полем формы.
В чем проблема не ясно...


И уж тем более не понятно при чем тут подписки на событие , обработки и ПолучитьОбъект()...
4. SedovSU@mail.ru 297 17.04.19 11:54 Сейчас в теме
(2) Ну вот нет!!!!! создавать расширение и туда пихать все документы - это не очень хорошая идея - трудно затратная
Автор смотрите, На самом деле Вы правильно смотрите на ПОДПИСКИ СОБЫТИЯ.
Можно создать подписку на события, в качестве источника выбрать ДокументМенеджер и событие ОбработкаПолученияФормы и написать код. То есть событие будет подключаться когда будет открываться форма. В процедуру передается источник - документ менеджер и вид формы. Следовательно я получил документ и форму, в этой форме можно найти элементы для Отвественного и установить доступность ЛОЖЬ!
5. _7445_ 17.04.19 13:09 Сейчас в теме
(4)Спасибо за вниманию. Написал код такой. Но по-моему есть ошибка.
Процедура ОтключитьДоступностьРеквизитаОтветственныйОбработкаПолученияФормы(Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Экспорт
	СтандартнаяОбработка = Ложь;
	Объект = Источник.Ссылка.ПолучитьОбъект();
	Объект.Ответственный.Доступность = Ложь;
КонецПроцедуры
6. SedovSU@mail.ru 297 17.04.19 14:21 Сейчас в теме
(5) а скажите у вас обычные формы или управляемые??
7. _7445_ 17.04.19 14:41 Сейчас в теме
8. SedovSU@mail.ru 297 17.04.19 14:47 Сейчас в теме
(7) тогда должно вот так получиться (как вы написали немного не так)


	Если ТипЗнч(Источник) =   Тип("ДокументМенеджер.ДокументКакойто") Тогда
		Если ВидФормы = "ФормаОбъекта" Тогда  // или ФормаДокумента		
			СтандартнаяОбработка = ложь;
                        // Получаем форму открываемомго объекта
                        Если Параметры.Свойство("Ключ") Тогда
                                Документ = Параметры.Ключ.ПолучитьОбъект();
                        Иначе
				ЭлементОбъект = Документы.ДокументКакойто.СоздатьДокумент();	
			КонецЕсли;
			ФормаДокумента = ЭлементОбъект.ПолучитьФорму("ФормаОбъекта"); // или ФормаДокумента
			// Изменям форму программно
			ФормаДокумента .ЭлементыФормы.Ответственный.Доступность = Ложь;
			// Открываем измененную форму
			ФормаДокумента.Открыть();					
		КонецЕсли;
	КонецЕсли;
Показать
9. _7445_ 17.04.19 14:47 Сейчас в теме
(6)Могу ли создавать обработку для ее.
Писал такой код но выдают ошибку. -
Для Счетчик = 0 По Метаданные.Документы.Количество() Цикл  //Получить количеству документов
	    Стр = Метаданные.Документы.Получить(Счетчик);          
		СтрокаБезКавычки = СтрЗаменить(Стр.Имя,"""","");       //Удаляем кавычки
		Запрос = Новый Запрос;
		Запрос.Текст = "Выбрать
		|Ссылка
		|ИЗ
		|Документы." + СтрокаБезКавычки;                       //Вот по-моему ошибка в запросе. Там пусто. Надо указать дата?
		Выборка = Запрос.Выполнить().Выбрать();
		Выборка.Следующий();
		Документ = Выборка.Ссылка.ПолучитьОбъект();
	    Документ.Ответственный.Доступность = Ложь;
	КонецЦикла;
Показать
10. SedovSU@mail.ru 297 17.04.19 14:48 Сейчас в теме
(9) у вас таким подходом не получится. потому что доступность реквизита определяется на уровне формы. То есть Вы блокируете не реквизит а элемент формы к которому привязан данный реквизит. Поэтому ваш код выше не получиться так реализовать.
3. SedovSU@mail.ru 297 17.04.19 11:46 Сейчас в теме
Вот так можно

	Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл 
		ВыборкаДокументов = Документы[ОбъектМетаданных.Имя].Выбрать();
		Пока ВыборкаДокументов.Следующий() Цикл
			ОбъектДокумент = ВыборкаДокументов.Ссылка.ПолучитьОбъект();	
                        //// тут тип документ объект, далаем что нам нужно
		КонецЦикла;
	КонецЦикла;


То есть берем все объекты метадданых документов и каждый вид начинаем перебирать и получать каждый документ!
Оставьте свое сообщение

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