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

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) Ну вот нет!!!!! создавать расширение и туда пихать все документы - это не очень хорошая идея - трудно затратная
Автор смотрите, На самом деле Вы правильно смотрите на ПОДПИСКИ СОБЫТИЯ.
Можно создать подписку на события, в качестве источника выбрать ДокументМенеджер и событие ОбработкаПолученияФормы и написать код. То есть событие будет подключаться когда будет открываться форма. В процедуру передается источник - документ менеджер и вид формы. Следовательно я получил документ и форму, в этой форме можно найти элементы для Отвественного и установить доступность ЛОЖЬ!
_7445_; +1
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 Сейчас в теме
Вот так можно

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


То есть берем все объекты метадданых документов и каждый вид начинаем перебирать и получать каждый документ!
_7445_; +1
Внимание! Тема сдана в архив

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