January 13

На память 1С Спец

*В модуле объекта документа Операция*

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	НаборЗаписей = Движения.Управленческий;
	Если Не ЭтоНовый() И Не НаборЗаписей.Модифицированность() Тогда
		НаборЗаписей.Прочитать();
	КонецЕсли;
	
	Если НаборЗаписей.Количество() > 0 Тогда
		НаборЗаписей.УстановитьАктивность(Не ПометкаУдаления);
	КонецЕсли;
	
	НаборЗаписей.Записывать = Истина;
КонецПроцедуры

11) Привязка сообщения к элементу форму:
Прикрепление сообщения о нехватке товара при списании к столбцу Количество ТЧ Товары. Рекомендуется делать во всех случаях для доведения приема до автоматизма(одна из задач на УФ):

Сообщение. Текст = " Не хватает" + Выборка.Представление + " в количестве " + Число(Выборка.Количество - Выборка.КоличествоОстаток) ;
Сообщение. Поле = "Товары[" + (Выборка.НомерСтроки -1) + "].Количество";
Сообщение.УстановитьДанные(ЭтотОбъект);

*В модуле объекта обработки ЗаполнениеГрафика*

Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни) Экспорт 

	Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();
	Набор.Отбор.Подразделение.Установить(Подразделение);
	
	ЧислоСекундВСутках = 86400;
	Дат = ДатаНачала;
	
	Пока Дат <= ДатаОкончания Цикл
		Запись = Набор.Добавить();
		Запись.Дата = Дат;
		Запись.Подразделение = Подразделение;
		Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда
			Запись.КоличествоЧасов = 0;
		Иначе	          
			Запись.КоличествоЧасов = 8;
		КонецЕсли; 
		Дат = Дат + ЧислоСекундВСутках;
	КонецЦикла; 
	Набор.Записать();
	
КонецПроцедуры

*В модуле объекта обработки ЗаполнениеГрафика при Сверхурочных часах*

Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни, ОтражатьСверхурочные) Экспорт 
	
	Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();
	Набор.Отбор.Подразделение.Установить(Подразделение);
	
	Набор.Прочитать();
	
	ЧислоСекундВСутках = 86400;
	
	Дат = ДатаНачала;
		
	Пока Дат <= ДатаОкончания Цикл
		Запись = Набор.Добавить();
		Запись.Дата = Дат;
		Запись.Подразделение = Подразделение;
		ДеньНедели = ДеньНедели(Дат);
		Если Найти(ВыходныеДни, Строка(ДеньНедели)) Тогда
			Запись.РабочихЧасов = 0;
		Иначе	          
			Запись.РабочихЧасов = 8;
		КонецЕсли; 
		
		Если ОтражатьСверхурочные И (ДеньНедели =2 ИЛИ ДеньНедели = 4) Тогда
			Запись.СверхурочныхЧасов = 3;
		КонецЕсли;
		
		Дат = Дат + ЧислоСекундВСутках;
	КонецЦикла; 
	Набор.Записать();
КонецПроцедуры

*В модуле объекта обработки ЗаполнениеГрафика при смене 1 через 3*

Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни) Экспорт 
	
	Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();
	Набор.Отбор.График.Установить(График);
	Набор.Прочитать();
	
	ЧислоСекундВСутках = 8640Текуща
	
	ТекущаяДата = ДатаНачала;
	Пока ТекущаяДата <= ДатаОкончания Цикл
		Запись = Набор.Добавить();
		Запись.Дата = ТекущаяДата;
		Запись.График = График;
		Запись.КоличествоЧасов = 24;
		ТекущаяДата = ТекущаяДата + 3 * 86400;
	КонецЦикла; 
	Набор.Записать();
КонецПроцедуры

*В модуле объекта обработки ЗаполнениеГрафика при обмене Автомобилми и дополнительному графику по пятидневки для расчета отпуска*

Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни) Экспорт 
	Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();
	Набор.Отбор.Автомобиль.Установить(Автомобиль);
	ЧислоСекундВСутках = 86400;
	Дат = ДатаНачала;
	
	Пока Дат <= ДатаОкончания Цикл
		Запись = Набор.Добавить();
		Запись.Дата = Дат;
		Запись.Автомобиль = Автомобиль;
		Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда
			Запись.РабочихДней = 0;
		Иначе	          
			Запись.РабочихДней = 1;
		КонецЕсли; 
		
		Если ДеньНедели(Дат) < 6 Тогда
			Запись.ДнейПятидневки = 1;
		Иначе	
			Запись.ДнейПятидневки = 0;
		КонецЕсли;
		
		Дат = Дат + ЧислоСекундВСутках;
	КонецЦикла; 
	Набор.Записать();

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