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