1. Для работы со складами, в документы добавил следующие процедуры:
В документ ПоступлениеТоваровИУслуг:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Элементы.Склад.Видимость = Объект.Организация.ВестиУчетПоСкладам;
Иначе
Элементы.Склад.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Элементы.Товары.ПодчиненныеЭлементы.ТоварыСклад.Видимость = Объект.Организация.ВестиУчетПоСкладам;
Иначе
Элементы.Товары.ПодчиненныеЭлементы.ТоварыСклад.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
МассивДобавляемыхРеквизитов = Новый Массив;
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Дерево", Новый ОписаниеТипов("ДеревоЗначений")));
Для Каждого Колонка Из ДеревоОбъект.Колонки Цикл
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "Дерево"));
КонецЦикла;
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
Для Каждого Колонка Из ДеревоОбъект.Колонки Цикл
НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), ЭлементДерево);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "Дерево." + Колонка.Имя;
КонецЦикла;
КонецПроцедуры // СобратьИнформациюНаСервере()
Вход
Важно!
Для новых покупателей Базового курса - с чего начать
...........................................................
Все контакты Саппорта Spec8.ru
...........................................................
Как задавать вопросы по материалам курса и ДЗ
...........................................................
Что такое Мастер-группа
...........................................................
Все материалы этого сайта являются составной частью Базового / Продвинутого курсов по программированию - и являются объектами авторского и имущественного права.
Любое их распространение без письменного согласования с авторами запрещено.
1. Для работы со складами, в документы добавил следующие процедуры:
В документ ПоступлениеТоваровИУслуг:
Процедура ПриОткрытии(Отказ)
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Элементы.Склад.Видимость = Объект.Организация.ВестиУчетПоСкладам;
Иначе
Элементы.Склад.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
Элементы.Склад.Видимость = Объект.Организация.ВестиУчетПоСкладам;
КонецПроцедуры
В документ РеализацияТоваровИУслуг:
Процедура ПриОткрытии(Отказ)
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Элементы.Товары.ПодчиненныеЭлементы.ТоварыСклад.Видимость = Объект.Организация.ВестиУчетПоСкладам;
Иначе
Элементы.Товары.ПодчиненныеЭлементы.ТоварыСклад.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
Элементы.Товары.ПодчиненныеЭлементы.ТоварыСклад.Видимость = Объект.Организация.ВестиУчетПоСкладам;
КонецПроцедуры
2. Создал обработку Метаданные документа
В форме добавил реквизит для выбора любого вида документа, в модуле формы следующий код:
Процедура ВывестиДанные(Команда)
СобратьИнформациюНаСервере(Объект.ДокументДляРазбора);
КонецПроцедуры
&НаСервере
Функция ПроверкаНаСсылочныйТип(Реквизит)
Если Реквизит.Тип = Тип("Число") Тогда
Возврат Ложь;
ИначеЕсли Реквизит.Тип = Тип("Строка") Тогда
Возврат Ложь;
ИначеЕсли Реквизит.Тип = Тип("Дата") Тогда
Возврат Ложь;
ИначеЕсли Реквизит.Тип = Тип("Булево") Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;
КонецФункции
&НаСервере
Процедура ВывестиСтроки(Дерево, Имя, Таблица)
СтрокаР1 = Дерево.Строки.Добавить();
СтрокаР1.Данные = Имя;
Для каждого Строка Из Таблица Цикл
СтрокаР2 = СтрокаР1.Строки.Добавить();
СтрокаР2.Данные = Строка;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ВывестиСтрокиТабличныхЧастей(Дерево, Имя, Таблица)
СтрокаР1 = Дерево.Строки.Добавить();
СтрокаР1.Данные = Имя;
Для каждого Строка Из Таблица Цикл
СтрокаР2 = СтрокаР1.Строки.Добавить();
СтрокаР2.Данные = Строка;
ВывестиСтроки(СтрокаР2, "Реквизиты", Строка.Реквизиты);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура СобратьИнформациюНаСервере(ДокументДляРазбора)
ДеревоОбъект = Новый ДеревоЗначений;
МетаДанныеДок = ДокументДляРазбора.ПолучитьОбъект().Метаданные();
ДеревоОбъект.Колонки.Добавить("Данные", Новый ОписаниеТипов("Строка"));
ВывестиСтроки(ДеревоОбъект, "Реквизиты", МетаДанныеДок.Реквизиты);
ВывестиСтроки(ДеревоОбъект, "Формы", МетаДанныеДок.Формы);
ВывестиСтрокиТабличныхЧастей(ДеревоОбъект, "Табличные части", МетаДанныеДок.ТабличныеЧасти);
МассивДобавляемыхРеквизитов = Новый Массив;
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Дерево", Новый ОписаниеТипов("ДеревоЗначений")));
Для Каждого Колонка Из ДеревоОбъект.Колонки Цикл
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "Дерево"));
КонецЦикла;
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
ЗначениеВРеквизитФормы(ДеревоОбъект, "Дерево");
ЭлементДерево = Элементы.Добавить("Дерево", Тип("ТаблицаФормы"));
ЭлементДерево.ПутьКДанным = "Дерево";
ЭлементДерево.Отображение = ОтображениеТаблицы.Дерево;
Для Каждого Колонка Из ДеревоОбъект.Колонки Цикл
НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), ЭлементДерево);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "Дерево." + Колонка.Имя;
КонецЦикла;
КонецПроцедуры // СобратьИнформациюНаСервере()