Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

1С:Салон красоты

    • #1
    • 24.11.2012 12:03
    0
    1С:Салон красоты, редакция 2.0 (2.0.6.1)
    В менте "График работы сотрудников" при попытке записи выдается ошибка "Индекс находиться за границами массива"
    • #2
    • 24.11.2012 12:04
    0
    Текст ошибки
    {Обработка.ГрафикРаботыСотрудников.Форма.Форма.Форма(519)}: Индекс находится за границами массива
    ЗаписиРегистра.Отбор.СтруктурнаяЕдиница.Установить(ГрафикПериодовРаботы[0].СтруктурнаяЕдиница);

    // Процедура сохраняет данные в регистр и заполняет ими Таблицу значений ГрафикПериодовРаботы
    //
    Процедура СохранитьИзменения(Период)
    	
    	ЗаписиРегистра = РегистрыСведений.ВремяРаботыСотрудниковПлан.СоздатьНаборЗаписей();
    	ЗаписиРегистра.Отбор.СтруктурнаяЕдиница.Установить(ГрафикПериодовРаботы[0].СтруктурнаяЕдиница);
    	ЗаписиРегистра.Отбор.МесяцОтбор.Установить(НачалоМесяца(ГрафикПериодовРаботы[0].Период));
    	ЗаписиРегистра.Прочитать();
    	ЗаписиРегистра.Очистить();
    	СуткиВСекундах = 24*60*60;
    	
    	Для Каждого СтрокаГрафикаРаботы Из ГрафикПериодовРаботы Цикл  
    		Для а = 1 По 31 Цикл
    			Для Каждого СтрокаПериодаРаботы Из СтрокаГрафикаРаботы["День" + а] Цикл
    				НоваяЗапись = ЗаписиРегистра.Добавить();
    				НоваяЗапись.СтруктурнаяЕдиница = СтрокаГрафикаРаботы.СтруктурнаяЕдиница;
    				НоваяЗапись.Сотрудник = СтрокаГрафикаРаботы.Сотрудник;
    				
    				НоваяЗапись.ДатаВремяНачала = ?(СтрокаПериодаРаботы.Значение.НачалоСмены - Дата(1,1,1) > СуткиВСекундах, СтрокаПериодаРаботы.Значение.НачалоСмены, 
    												Период+(а-1)*СуткиВСекундах+(СтрокаПериодаРаботы.Значение.НачалоСмены - Дата(1,1,1))); 
    				НоваяЗапись.ДатаВремяОкончания = ?(СтрокаПериодаРаботы.Значение.ОкончаниеСмены - Дата(1,1,1) > СуткиВСекундах, СтрокаПериодаРаботы.Значение.ОкончаниеСмены, 
    													Период+(а-1)*СуткиВСекундах+(СтрокаПериодаРаботы.Значение.ОкончаниеСмены - Дата(1,1,1))); 
    				НоваяЗапись.Минуты = (НоваяЗапись.ДатаВремяОкончания - НоваяЗапись.ДатаВремяНачала) / 60;
    				НоваяЗапись.МесяцОтбор = НачалоМесяца(НоваяЗапись.ДатаВремяНачала);
    			КонецЦикла;
    		КонецЦикла;
    	КонецЦикла;
    	
    	ЗаписиРегистра.Записать(Истина);
    	МодифицированностьГрафикаРаботы = Ло


    Подскажие в чем проблема?
    • #3
    • 24.11.2012 21:50
    0
    ГрафикПериодовРаботы не содержит значений
    • #4
    • 24.11.2012 22:25
    0
    добавьте что нибудь в ГрафикПериодовРаботы или условие поставьте
    • #5
    • 24.11.2012 22:29
    0
    Если ГрафикПериодовРаботы.Количество() >0 Тогда
    ЗаписиРегистра.Отбор.СтруктурнаяЕдиница.Установить(ГрафикПериодовРаботы[0].СтруктурнаяЕдиница);
    КонецЕсли;
    • #6
    • 24.11.2012 22:35
    0
    Лучше так Если ГрафикПериодовРаботы.Количество() >0 Тогда Предупреждение("Не заполнен график!"); Возврат; КонецЕсли; перед ЗаписиРегистра = РегистрыСведений.ВремяРаботыСотрудниковПлан.СоздатьНаборЗаписей();
    • #7
    • 25.11.2012 12:12
    0
    ///////////////////////////////////////////////////////////////////////////////
    // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ
    
    &НаКлиенте
    // Процедура обработчик события Выбор строки таблицы ПериодыРаботы
    //
    Процедура ПериодыРаботыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    	
    	СтандартнаяОбработка = Ложь;
    	КомандаДобавитьВВыбранные(Неопределено);
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура обработчик события Выбор строки таблицы ВыбранныеПериоды
    //
    Процедура ВыбранныеПериодыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    	
    	СтандартнаяОбработка = Ложь;
    	КомандаУдалитьИзВыбранных(Неопределено);
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик события Выбор Таблицы ГрафикПериодовРаботы.
    //
    Процедура ГрафикПериодовРаботыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    		
    	Если Сред(Поле.Имя, 1, 18) <> "ТаблицаГрафикаДень" Или ГрафикПериодовРаботы.Количество() = 0 Тогда
    		Возврат;
    	КонецЕсли;
    	Если ГрафикПериодовРаботы.Количество() >0 Тогда Предупреждение("Не заполнен график!"); Возврат; КонецЕсли; перед ЗаписиРегистра = РегистрыСведений.ВремяРаботыСотрудниковПлан.СоздатьНаборЗаписей(); 
    	
    	ТекущаяСтрока = Элементы.ГрафикПериодовРаботы.ТекущиеДанные;
    	
    	ДобавитьПериодРаботыСотруднику(ТекущаяСтрока.Сотрудник, ТекущаяСтрока.Должность, Число(Сред(Поле.Имя, 19)));
    	
    	МодифицированностьГрафикаРаботы = Истина;
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик изменения реквизита СтруктурнаяЕдиница.
    // 
    Процедура СтруктурнаяЕдиницаПриИзменении(Элемент)
    	
    	//Заполняем периоды работы для текущей структурной единицы из справочника.
    	ПериодыРаботы.Параметры.УстановитьЗначениеПараметра("СтруктурнаяЕдиница", Объект.СтруктурнаяЕдиница);
    	ДеревоСотрудников.Параметры.УстановитьЗначениеПараметра("СтруктурнаяЕдиница", Объект.СтруктурнаяЕдиница);
    	
    	ПрочитатьГрафикРаботыИзРегистра();
    	
    КонецПроцедуры
    
    &НаСервере
    // Процедура - обработчик события ПриСозданииНаСервере формы.
    //
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    	
    	Если Не ЗначениеЗаполнено(Объект.СтруктурнаяЕдиница)  Тогда
    		Объект.СтруктурнаяЕдиница = ПараметрыСеанса.ТекущаяСтруктурнаяЕдиница;
    	КонецЕсли;
    	
    	Если Не ЗначениеЗаполнено(Объект.Период)  Тогда
    		Объект.Период = НачалоМесяца(ТекущаяДата());
    		ПериодПредставление = Формат(Объект.Период, "ДФ='MMMM yyyy'");
    	КонецЕсли;
    	
    	ПериодыРаботы.Параметры.УстановитьЗначениеПараметра("СтруктурнаяЕдиница", Объект.СтруктурнаяЕдиница);
    	ДеревоСотрудников.Параметры.УстановитьЗначениеПараметра("СтруктурнаяЕдиница", Объект.СтруктурнаяЕдиница);
    	ДеревоСотрудников.Параметры.УстановитьЗначениеПараметра("НачалоМесяца", НачалоМесяца(Объект.Период));
    	
    	ПредСтруктурнаяЕдиница = ПараметрыСеанса.ТекущаяСтруктурнаяЕдиница;	
    	
    	ПрочитатьГрафикРаботыИзРегистра();	
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик события НачалоВыбораИзСписка поля ввода ПериодПредставление.
    //
    Процедура ПериодПредставлениеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    	
    	СтандартнаяОбработка = Ложь;
    	
    	КопияПериод = Объект.Период;
    	КопияПериодПредставление = ПериодПредставление;
    	
    	РаботаСДиалогами.ВыбратьПериодИзСпискаПредставлений(ЭтаФорма, Элемент, Объект.Период, ПериодПредставление, ?(ЗначениеЗаполнено(Объект.Период), Неопределено, НачалоМесяца(ТекущаяДата())));
    	
    	СохранятьИзменения = ВыводДиалогаОСохраненииИзменения();
    	Если СохранятьИзменения = Неопределено Тогда
    		Объект.Период = КопияПериод;
    		ПериодПредставление = КопияПериодПредставление;
    		Возврат;		
    	ИначеЕсли СохранятьИзменения = Истина Тогда
    		СохранитьИзменения(КопияПериод);
    	КонецЕсли;
    	
    	ДеревоСотрудников.Параметры.УстановитьЗначениеПараметра("НачалоМесяца", НачалоМесяца(Объект.Период));
    	
    	ПрочитатьГрафикРаботыИзРегистра();
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик события ПередЗакрытием формы.
    //
    Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    	
    	СохранятьИзменения = ВыводДиалогаОСохраненииИзменения();
    	Если СохранятьИзменения = Неопределено Тогда
    		Отказ = Истина;		
    	ИначеЕсли СохранятьИзменения = Истина Тогда
    		СохранитьИзменения(Объект.Период);
    	КонецЕсли;
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик события ПриАктивизацииСтроки реквизита ДеревоСотрудников.
    //
    Процедура ДеревоСотрудниковПриАктивизацииСтроки(Элемент)  	
    	
    	Если Элементы.ДеревоСотрудников.ВыделенныеСтроки.Количество() = 0 Тогда
    		Возврат;
    	КонецЕсли;
    	
    	ВыделенныйЭлемент = Элементы.ДеревоСотрудников.ВыделенныеСтроки[0];
    	ЗначениеФильтра = ?(ТипЗнч(ВыделенныйЭлемент) = Тип("СтрокаГруппировкиДинамическогоСписка"), ВыделенныйЭлемент.Ключ, ВыделенныйЭлемент);
    	
    	Если ТипЗнч(ЗначениеФильтра) = Тип("СправочникСсылка.Сотрудники") Тогда
    		Элементы.ГрафикПериодовРаботы.ОтборСтрок = Новый ФиксированнаяСтруктура("Сотрудник", ЗначениеФильтра);
    		
    	ИначеЕсли ТипЗнч(ЗначениеФильтра) = Тип("СправочникСсылка.Должности") Тогда
    		Элементы.ГрафикПериодовРаботы.ОтборСтрок = Новый ФиксированнаяСтруктура("Должность", ЗначениеФильтра);
    	Иначе
    		//Элементы.ГрафикПериодовРаботы.ОтборСтрок = Неопределено;
    		Элементы.ГрафикПериодовРаботы.ОтборСтрок = Новый ФиксированнаяСтруктура("СтруктурнаяЕдиница", Объект.СтруктурнаяЕдиница);
    	КонецЕсли;
    	
    	ПечататьДок();	
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик события "Выбор" реквизита ДеревоСотрудников.
    //
    Процедура ДеревоСотрудниковВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    	
    	Если Элементы.ДеревоСотрудников.ВыделенныеСтроки.Количество() = 0 Тогда
    		Возврат;
    	КонецЕсли;
    	
    	ВыделенныйЭлемент = Элементы.ДеревоСотрудников.ВыделенныеСтроки[0];
    	Если ТипЗнч(ВыделенныйЭлемент) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
    		СтандартнаяОбработка = Ложь;
    	КонецЕсли;
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик события "ПередУдалением" реквизита "ГрафикПериодовРаботы".
    //
    Процедура ГрафикПериодовРаботыПередУдалением(Элемент, Отказ)
    	
    	Отказ = Истина;
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик события "ПередНачаломДобавления" реквизита "ГрафикПериодовРаботы".
    //
    Процедура ГрафикПериодовРаботыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
    	
    	Отказ = Истина;
    	
    КонецПроцедуры
    
    &НаКлиенте
    //Процедура - обработчик события "ОбработкаЗаписиНового"
    //
    Процедура ПериодыРаботыОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка)
    	
    	Элементы.ПериодыРаботы.Обновить();
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик события "НачалоВыбора" реквизита "ПроизвольныйПериодПредставление".
    //
    Процедура ПроизвольныйПериодПредставлениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
    	СтандартнаяОбработка = Ложь;
    	
    	// Список выбора даты начала
    	
    	СписокВеремени = ОбщегоНазначенияКлиентПовтИсп.ВыбратьСменуПоСтруктурнойЕдинице(СтандартнаяОбработка, Объект.СтруктурнаяЕдиница, Истина);
    	ВыбранноеВремя = ВыбратьИзСписка(СписокВеремени, Элемент); 
    	
    	Если ВыбранноеВремя = Неопределено Тогда
    		Возврат;
    	КонецЕсли;
    	
    	ПроизвольныйПериодНачалоСмены = ВыбранноеВремя.Значение;
    	ПроизвольныйПериодПредставление = Формат(ПроизвольныйПериодНачалоСмены, "ДФ=ЧЧ:мм; ДП=00:00") + " - " + Формат(ПроизвольныйПериодОкончаниеСмены, "ДФ=ЧЧ:мм; ДП=24:00");
    	
    	// Список выбора даты окончания
    	
    	СписокВеремени = ОбщегоНазначенияКлиентПовтИсп.ВыбратьСменуПоСтруктурнойЕдинице(СтандартнаяОбработка, Объект.СтруктурнаяЕдиница, Ложь);
    	ВыбранноеВремя = ВыбратьИзСписка(СписокВеремени, Элемент); 
    
    	Если ВыбранноеВремя = Неопределено Тогда
    		Возврат;
    	КонецЕсли; 	
    	
    	ПроизвольныйПериодОкончаниеСмены = ВыбранноеВремя.Значение;
    	ПроизвольныйПериодПредставление = Формат(ПроизвольныйПериодНачалоСмены, "ДФ=ЧЧ:мм; ДП=00:00") + " - " + Формат(ПроизвольныйПериодОкончаниеСмены, "ДФ=ЧЧ:мм; ДП=24:00");
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик события "Очистка" реквизита "ПроизвольныйПериодПредставление".
    //
    Процедура ПроизвольныйПериодПредставлениеОчистка(Элемент, СтандартнаяОбработка)
    	
    	ПроизвольныйПериодНачалоСмены = Неопределено;
    	ПроизвольныйПериодОкончаниеСмены = Неопределено;
    	
    КонецПроцедуры
    
    ///////////////////////////////////////////////////////////////////////////////
    // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ КОМАНД
    
    &НаКлиенте
    // Процедура вызывается при нажатии кнопки "ДобавитьВВыбранные" формы.
    //
    Процедура КомандаДобавитьВВыбранные(Команда)
    	
    	ТекущаяСтрока = Элементы.ПериодыРаботы.ТекущиеДанные;
    	
    	Если ТекущаяСтрока = Неопределено Тогда
    		Возврат;
    	КонецЕсли;
    	ВремяНачалоСмены = Дата(01,01,01)+(ТекущаяСтрока.НачалоСмены - НачалоДня(ТекущаяСтрока.НачалоСмены));
    	ВремяОкончанияСмены = Дата(01,01,01)+(ТекущаяСтрока.ОкончаниеСмены - НачалоДня(ТекущаяСтрока.ОкончаниеСмены));
    	
    	
    	ПараметрыОтбора = Новый Структура("НачалоСмены, ОкончаниеСмены", ВремяНачалоСмены, ВремяОкончанияСмены);
    	Если ВыбранныеПериоды.НайтиСтроки(ПараметрыОтбора).Количество() = 0 Тогда
    		НоваяСтрока = ВыбранныеПериоды.Добавить();
    		ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекущаяСтрока);
    		ВыбранныеПериоды.Сортировать("НачалоСмены, ОкончаниеСмены Убыв");
    	КонецЕсли;
    	
    	Элементы.ПериодыРаботы.ТекущаяСтрока = Неопределено;
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура вызывается при нажатии кнопки "ДобавитьВВыбранные" формы.
    //
    Процедура КомандаДобавитьВВыбранныеПроизвольныйПериод(Команда)
    	
    	Если Не ЗначениеЗаполнено(ПроизвольныйПериодНачалоСмены) И Не ЗначениеЗаполнено(ПроизвольныйПериодОкончаниеСмены) Тогда
    		Возврат;
    	КонецЕсли;
    	
    	ПараметрыОтбора = Новый Структура("НачалоСмены, ОкончаниеСмены", ПроизвольныйПериодНачалоСмены, ПроизвольныйПериодОкончаниеСмены);
    	Если ВыбранныеПериоды.НайтиСтроки(ПараметрыОтбора).Количество() = 0 Тогда
    		НоваяСтрока = ВыбранныеПериоды.Добавить();
    		НоваяСтрока.НачалоСмены = ПроизвольныйПериодНачалоСмены;
    		НоваяСтрока.ОкончаниеСмены = ПроизвольныйПериодОкончаниеСмены;
    		ВыбранныеПериоды.Сортировать("НачалоСмены, ОкончаниеСмены Убыв");
    	КонецЕсли;
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура вызывается при нажатии кнопки "УдалитьВВыбранные" формы.
    //
    Процедура КомандаУдалитьИзВыбранных(Команда)
    	
    	ТекущаяСтрока = Элементы.ВыбранныеПериоды.ТекущиеДанные;
    	
    	Если ТекущаяСтрока = Неопределено Тогда
    		Возврат;
    	КонецЕсли;
    	
    	ВыбранныеПериоды.Удалить(ТекущаяСтрока);
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик команды СохранитьИЗакрыть.
    //
    Процедура СохранитьИЗакрыть(Команда)
    	
    	СохранитьИзменения(Объект.Период);
    	Если ЭтаФорма.Открыта() Тогда
    		Закрыть();
    	КонецЕсли;
    	
    КонецПроцедуры
    
    &НаКлиенте
    // Процедура - обработчик команды СохранитьИЗакрыть.
    //
    Процедура ВызватьМастерЗаполнения(Команда)
    	
    	МассивИндексовСотрудников = Элементы.ГрафикПериодовРаботы.ВыделенныеСтроки;
    	МассивСотрудников = Новый Массив;	
    	Для Каждого Индекс Из МассивИндексовСотрудников Цикл
    		МассивСотрудников.Добавить(ГрафикПериодовРаботы.НайтиПоИдентификатору(Индекс).Сотрудник);
    	КонецЦикла;
    	
    	ФормаМастера = ПолучитьФорму("Обработка.ГрафикРаботыСотрудников.Форма.МастерЗаполнения", 
    					Новый  Структура("СтруктурнаяЕдиница, МассивИндексовСотрудников, МассивСотрудников, Период", 
    					Объект.СтруктурнаяЕдиница, МассивИндексовСотрудников, МассивСотрудников, Объект.Период));	
    	АдресВременногоХранилища = ФормаМастера.ОткрытьМодально();
    	Если АдресВременногоХранилища <> Неопределено Тогда
    		ДобавитьВГрафик(АдресВременногоХранилища);
    	КонецЕсли;
    	
    КонецПроцедуры
    
    ///////////////////////////////////////////////////////////////////////////////
    // ОБЩИЕ ПРОЦЕДУРЫ
    
    &НаКлиенте
    // Процедура добавляет выбранные периоды работы в таблицу ГрафикПериодовРаботы
    //
    Процедура ДобавитьПериодРаботыСотруднику(Сотрудник, Должность, НомерДня, УстановитьПериодыРаботы = Неопределено)
    	
    	Если УстановитьПериодыРаботы = Неопределено Тогда
    		//УстановитьПериодыРаботы = ВыбранныеПериоды;
    		Если Элементы.ГрафикПериодовРаботы.ТекущийЭлемент.Имя <> "ГрафикПериодовРаботыСотрудник" Тогда
    			НомерКолонки = Сред(Элементы.ГрафикПериодовРаботы.ТекущийЭлемент.Имя,19, СтрДлина(Элементы.ГрафикПериодовРаботы.ТекущийЭлемент.Имя));
    			ДатаДня = НачалоМесяца(Объект.Период) + (Число(НомерКолонки) - 1) * 60 * 60 * 24;		
    			УстановитьПериодыРаботы = ПроверкаПериодовРаботы(ДеньНедели(ДатаДня));
    		КонецЕсли;
    		
    	КонецЕсли;
    	
    	
    	ЕстьЗаписи = ОбщегоНазначения.ПроверитьНаличиеПредварительнойЗаписи(Сотрудник, НачалоМесяца(Объект.Период) + (НомерДня- 1)*60*60*24, УстановитьПериодыРаботы, Объект.СтруктурнаяЕдиница);
    	
    	Если ЕстьЗаписи Тогда 
    		Сообщить("Для сотрудника "+Сотрудник+" на "+Формат(НачалоМесяца(Объект.Период) + (НомерДня- 1)*60*60*24, "ДЛФ=ДД")+
    				 " есть предварительные записи, график не может быть изменен.");
    		Возврат; 	
    	КонецЕсли;
    	
    	ЕстьЗанятость = ОбщегоНазначения.ПроверитьЗанятостьСотрудника(УстановитьПериодыРаботы, Сотрудник, объект.СтруктурнаяЕдиница, Объект.Период + (НомерДня - 1) * 24 * 60 * 60);
    	
    	Если ЕстьЗанятость Тогда
    		Сообщить("Сотрудник "+Сотрудник+" уже работает в этот период в другой структурной единице!");
    		Возврат;
    	КонецЕсли;
    	
    	//Очищаем периоды в графике периодов
    	ПараметрыОтбора = Новый Структура("Сотрудник", Сотрудник);
    	СтрокаГрафикаРаботы = ГрафикПериодовРаботы.НайтиСтроки(ПараметрыОтбора);
    	СтрокаГрафикаРаботы[0]["День" + НомерДня] = Неопределено;
    	
    	//объединим пересекающиеся периоды
    	
    	Если  ОбщегоНазначения.ПроверитьДатуУвольнения(Сотрудник, НачалоМесяца(Объект.Период) + (НомерДня- 1)*60*60*24, Объект.СтруктурнаяЕдиница) Тогда
    		Сообщить("Сотрудник уволен из организации "+Объект.СтруктурнаяЕдиница+" дата. Установка рабочего времени невозможна!");
    		Возврат;
    	КонецЕсли;	
    	
    	//Заполняем день графика работы выбранными периодами
    	Для Каждого СтрокаПериодРаботы Из УстановитьПериодыРаботы Цикл		
    		ПериодСтруктура = Новый Структура("НачалоСмены, ОкончаниеСмены", 
    		Объект.Период + (НомерДня - 1) * 24 * 60 * 60 +(СтрокаПериодРаботы.НачалоСмены - Дата(01, 01, 01)), 
    		Объект.Период + (НомерДня - 1) * 24 * 60 * 60 +(СтрокаПериодРаботы.ОкончаниеСмены - Дата(01, 01, 01)));
    		СтрокаГрафикаРаботы[0]["День" + НомерДня].Добавить(ПериодСтруктура, Формат(ПериодСтруктура.НачалоСмены, "ДФ='ЧЧ:мм'") + " - " + Формат(ПериодСтруктура.ОкончаниеСмены, "ДФ='ЧЧ:мм'"));	
    	КонецЦикла;
    	
    КонецПроцедуры
    
    &НаСервере
    //Функция - проверяет периоды работы на соответствие с периодами работы структурной единицы
    //
    Функция ПроверкаПериодовРаботы(ДеньНедели)
    	
    	МассивПериодов = Новый Массив;	
    	ТаблицаПериодов = РеквизитФормыВЗначение(Элементы.ВыбранныеПериоды.Имя);
    	а = 0;
    	Пока а < ТаблицаПериодов.Количество()  Цикл
    		Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
    		                      |	ВложенныйЗапрос.НачалоРаботы,
    		                      |	ВложенныйЗапрос.ОкончаниеРаботы
    		                      |ИЗ
    		                      |	(ВЫБРАТЬ
    		                      |		РасписаниеРаботы.НачалоРаботы КАК НачалоРаботы,
    		                      |		ВЫБОР
    		                      |			КОГДА РасписаниеРаботы.ОкончаниеРаботы = &ПустаяДата
    		                      |				ТОГДА &ДатаОкончания
    		                      |			ИНАЧЕ РасписаниеРаботы.ОкончаниеРаботы
    		                      |		КОНЕЦ КАК ОкончаниеРаботы
    		                      |	ИЗ
    		                      |		Справочник.СтруктурныеЕдиницы.РасписаниеРаботы КАК РасписаниеРаботы
    		                      |	ГДЕ
    		                      |		РасписаниеРаботы.Активность = ИСТИНА
    		                      |		И ДЕНЬНЕДЕЛИ(РасписаниеРаботы.ДеньНедели) = &ДеньНедели) КАК ВложенныйЗапрос
    		                      |ГДЕ
    		                      |	ВложенныйЗапрос.НачалоРаботы <= &НачалоРаботы
    		                      |	И ВложенныйЗапрос.ОкончаниеРаботы >= &ОкончаниеРаботы");
    		Запрос.УстановитьПараметр("СтруктурнаяЕдиница", Объект.СтруктурнаяЕдиница); 
    		Запрос.УстановитьПараметр("НачалоРаботы",ТаблицаПериодов[а].НачалоСмены);
    		Запрос.УстановитьПараметр("ОкончаниеРаботы", ТаблицаПериодов[а].ОкончаниеСмены);
    		Запрос.УстановитьПараметр("ПустаяДата", Дата(01,01,01));
    		Запрос.УстановитьПараметр("ДатаОкончания",Дата(01,01,01,23,59,59));
    		Запрос.УстановитьПараметр("ДеньНедели", Число(ДеньНедели));
    		Результат = Запрос.Выполнить().Выгрузить();
    		
    		Если Результат.Количество() = 0 Тогда
    			ТаблицаПериодов.Удалить(а);
    			а = а - 1;
    		КонецЕсли;
    		а = а + 1;
    	КонецЦикла;
    	ТаблицаПериодов.Сортировать("НачалоСмены Возр");
    	а = 0;
    	Пока а < ТаблицаПериодов.Количество()-1 Цикл
    		Если ТаблицаПериодов[а].ОкончаниеСмены >= ТаблицаПериодов[а+1].НачалоСмены Тогда
    			Если ТаблицаПериодов[а].ОкончаниеСмены >= ТаблицаПериодов[а+1].ОкончаниеСмены Тогда				
    				ТаблицаПериодов.Удалить(а+1);                                                  
    			Иначе
    				ТаблицаПериодов[а].ОкончаниеСмены = ТаблицаПериодов[а+1].ОкончаниеСмены;
    				ТаблицаПериодов.Удалить(а+1);
    			КонецЕсли;
    		Иначе
    			а=а+1;
    		КонецЕсли;
    	КонецЦикла;		
    	Для Каждого СтрокаТП из ТаблицаПериодов Цикл
    		Структура = Новый Структура();
    		Структура.Вставить("НачалоСмены",СтрокаТП.НачалоСмены);
    		Структура.Вставить("ОкончаниеСмены",СтрокаТП.ОкончаниеСмены);
    		МассивПериодов.Добавить(Структура);
    	КонецЦикла;
    	Возврат  МассивПериодов;
    	
    /////////////////////////////////////////////////////////////////////////////////	
    	
    	//МассивПериодов = Новый Массив;	
    	//
    	//ТаблицаПериодыРаботы = РеквизитФормыВЗначение(Элементы.ВыбранныеПериоды.Имя);
    	//
    	//НачалоРаботыСЕ = Объект.СтруктурнаяЕдиница.РасписаниеРаботы[ДеньНедели - 1].НачалоРаботы;
    	//ОкончаниеРаботыСЕ = Объект.СтруктурнаяЕдиница.РасписаниеРаботы[ДеньНедели - 1].ОкончаниеРаботы;
    	//
    	//Если ТаблицаПериодыРаботы.Количество() > 0 Тогда 
    	//	
    	//	ТаблицаПериодов = Новый ТаблицаЗначений();
    	//	ТаблицаПериодов.Колонки.Добавить("НачалоСмены");		
    	//	ТаблицаПериодов.Колонки.Добавить("ОкончаниеСмены");
    	//	Первый = Истина;
    	//	ОкончаниеСмены  = ТаблицаПериодыРаботы[0].ОкончаниеСмены;
    	//	
    	//	Для Каждого СтрокаТЧ Из ТаблицаПериодыРаботы Цикл
    	//		
    	//		Если СтрокаТЧ.НачалоСмены < НачалоРаботыСЕ Или
    	//			 СтрокаТЧ.ОкончаниеСмены > ОкончаниеРаботыСЕ  Тогда
    	//			 Продолжить;
    	//		КонецЕсли;
    	//		
    	//		Если Первый Или СтрокаТЧ.НачалоСмены >= ОкончаниеСмены Тогда 
    	//			ОкончаниеСмены = СтрокаТЧ.ОкончаниеСмены;
    	//			Первый = Ложь;
    	//			СтрокаТаблицыПериодов = ТаблицаПериодов.Добавить();
    	//			ЗаполнитьЗначенияСвойств(СтрокаТаблицыПериодов, СтрокаТЧ);
    	//		КонецЕсли;
    	//		
    	//	КонецЦикла;
    	//	
    	//	Для Каждого СтрокаТП Из ТаблицаПериодов Цикл
    	//		Структура = Новый Структура();
    	//		Структура.Вставить("НачалоСмены", СтрокаТП.НачалоСмены);
    	//		Структура.Вставить("ОкончаниеСмены", СтрокаТП.ОкончаниеСмены);
    	//		МассивПериодов.Добавить(Структура);
    	//	КонецЦикла;
    	//	
    	//КонецЕсли;
    	//
    	//Возврат МассивПериодов;
    	
    КонецФункции
    
    &НаКлиенте
    //Функция - выводит диалог о сохранении изменений
    //
    Функция ВыводДиалогаОСохраненииИзменения()
    	
    	//Вычисляем, надо ли сохранять
    	Если МодифицированностьГрафикаРаботы = Ложь Тогда
    		Возврат Ложь;
    	КонецЕсли;
    	
    	ОтветПользователя = Вопрос("Сохранить изменения ?", РежимДиалогаВопрос.ДаНетОтмена);
    	Если ОтветПользователя = КодВозвратаДиалога.Отмена Тогда
    		Возврат Неопределено;
    	ИначеЕсли ОтветПользователя = КодВозвратаДиалога.Да Тогда
    		Возврат Истина;
    	Иначе
    		Возврат Ложь;
    	КонецЕсли;
    	
    КонецФункции
    
    &НаСервере
    // Процедура сохраняет данные в регистр и заполняет ими Таблицу значений ГрафикПериодовРаботы
    //
    Процедура СохранитьИзменения(Период)
    	
    	ЗаписиРегистра = РегистрыСведений.ВремяРаботыСотрудниковПлан.СоздатьНаборЗаписей();
    	ЗаписиРегистра.Отбор.СтруктурнаяЕдиница.Установить(ГрафикПериодовРаботы[0].СтруктурнаяЕдиница);
    	ЗаписиРегистра.Отбор.МесяцОтбор.Установить(НачалоМесяца(ГрафикПериодовРаботы[0].Период));
    	ЗаписиРегистра.Прочитать();
    	ЗаписиРегистра.Очистить();
    	СуткиВСекундах = 24*60*60;
    	
    	Для Каждого СтрокаГрафикаРаботы Из ГрафикПериодовРаботы Цикл  
    		Для а = 1 По 31 Цикл
    			Для Каждого СтрокаПериодаРаботы Из СтрокаГрафикаРаботы["День" + а] Цикл
    				НоваяЗапись = ЗаписиРегистра.Добавить();
    				НоваяЗапись.СтруктурнаяЕдиница = СтрокаГрафикаРаботы.СтруктурнаяЕдиница;
    				НоваяЗапись.Сотрудник = СтрокаГрафикаРаботы.Сотрудник;
    				
    				НоваяЗапись.ДатаВремяНачала = ?(СтрокаПериодаРаботы.Значение.НачалоСмены - Дата(1,1,1) > СуткиВСекундах, СтрокаПериодаРаботы.Значение.НачалоСмены, 
    												Период+(а-1)*СуткиВСекундах+(СтрокаПериодаРаботы.Значение.НачалоСмены - Дата(1,1,1))); 
    				НоваяЗапись.ДатаВремяОкончания = ?(СтрокаПериодаРаботы.Значение.ОкончаниеСмены - Дата(1,1,1) > СуткиВСекундах, СтрокаПериодаРаботы.Значение.ОкончаниеСмены, 
    													Период+(а-1)*СуткиВСекундах+(СтрокаПериодаРаботы.Значение.ОкончаниеСмены - Дата(1,1,1))); 
    				НоваяЗапись.Минуты = (НоваяЗапись.ДатаВремяОкончания - НоваяЗапись.ДатаВремяНачала) / 60;
    				НоваяЗапись.МесяцОтбор = НачалоМесяца(НоваяЗапись.ДатаВремяНачала);
    			КонецЦикла;
    		КонецЦикла;
    	КонецЦикла;
    	
    	ЗаписиРегистра.Записать(Истина);
    	МодифицированностьГрафикаРаботы = Ложь;
    	
    КонецПроцедуры
    
    &НаСервере
    // Процедура - обработчик события ПриСозданииНаСервере формы.
    //
    Процедура ПрочитатьГрафикРаботыИзРегистра()
    	//Salaman//+
    	ВыбранныеПериоды.Очистить();
    	
    	//ЗащитаСервер.ВернутьМодульХеликс().ПрочитатьИЗаполнитьГрафикРаботыИзРегистра(ГрафикПериодовРаботы, Новый Структура("Месяц, СтруктурнаяЕдиница", Объект.Период, Объект.СтруктурнаяЕдиница));
    	
    	//ЗащитаСервер.ВернутьМодульХеликс().ОбновитьПредставлениеДняВКолонках(Элементы.ГрафикПериодовРаботы, Новый Структура("Месяц", Объект.Период));
    	
    	МодифицированностьГрафикаРаботы	= Ложь;
        //Salaman//-
    КонецПроцедуры
    
    &НаСервере
    //Процедура - добавляет изменения, сделанные в мастере заполнения в график сотрудников
    //
    Процедура ДобавитьВГрафик(АдресВременногоХранилища)
    	
    	ТаблицаПериодов = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
    	Для Каждого СтрокаТЧ Из ТаблицаПериодов Цикл
    		
    		СтрокаГПР = ГрафикПериодовРаботы.НайтиПоИдентификатору(СтрокаТЧ.Идентификатор);
    		
    		Если СтрокаГПР <> Неопределено Тогда
    			
    			вГраница = День(СтрокаТЧ.ДатаОкончания);
    			нГраница = День(СтрокаТЧ.ДатаНачала);
    			Для Индекс = нГраница По вГраница Цикл
    				
    				Если Не ЗначениеЗаполнено(СтрокаТЧ["День"+Индекс]) И 
    					ОбщегоНазначения.ПроверитьНаличиеПредварительнойЗаписи(СтрокаГПР.Сотрудник, 
    					Объект.Период + (Индекс-1)*60*60*24, СтрокаГПР["День"+Индекс].ВыгрузитьЗначения(), Объект.СтруктурнаяЕдиница) 
    					Тогда
    					Продолжить;
    				КонецЕсли;
    				
    				СтрокаГПР["День"+Индекс] = СтрокаТЧ["День"+Индекс];	
    				МодифицированностьГрафикаРаботы = Истина;
    			КонецЦикла;
    			
    		КонецЕсли;
    		
    		Для Каждого Сообщение Из СтрокаТЧ.МассивСообщений Цикл
    			Сообщить(Сообщение);
    		КонецЦикла;
    		
    	КонецЦикла;
    	
    КонецПроцедуры
    
    &НаСервере
    Функция ПечататьДок() Экспорт
    	
    	//устанавливаем значение фильтра
    	
    	нГраница = День(НачалоМесяца(Объект.Период));
    	вГраница = День(КонецМесяца(Объект.Период));
    	
    	Тдата=  НачалоМесяца(Объект.Период);
    	
    	ВыделенныйЭлемент = Элементы.ДеревоСотрудников.ВыделенныеСтроки[0];
    	ЗначениеФильтра = ?(ТипЗнч(ВыделенныйЭлемент) = Тип("СтрокаГруппировкиДинамическогоСписка"), ВыделенныйЭлемент.Ключ, ВыделенныйЭлемент);
    	
    	ТабДок= Новый ТабличныйДокумент;
    	
    	ТабДок.Очистить();
        ТабДокумент = Новый ТабличныйДокумент;
    	Макет =Обработки.ГрафикРаботыСотрудников.ПолучитьМакет("Макет");
    		
    	ТабДокументШапка = Новый ТабличныйДокумент;
    	ТабДокументШапка.Очистить();
    	
    	ОбластьМакета = Макет.ПолучитьОбласть("ОбластьЗаголовок");
    	
    	ОбластьМакета.Параметры.ГрафикЕдиница="График работы сотрудников "+Объект.СтруктурнаяЕдиница;
    	ОбластьМакета.Параметры.Период= "Период: " + ПериодПредставление;
    	Табдок.Вывести(ОбластьМакета);
    	ОбластьМакета = Макет.ПолучитьОбласть("ОбластьСотрудникШапка");
    	ТабДокументШапка.Вывести(ОбластьМакета);
    	ТабДок.Присоединить(ТабДокументШапка);
    	
    	Для н=нГраница По вГраница Цикл
    		
    		Если (Формат((Тдата),"ДФ=дддд")="воскресенье") или (Формат((Тдата),"ДФ=дддд")="суббота") тогда
    			ОбластьМакета = Макет.ПолучитьОбласть("ОбласьШапкаДеньВ");
    		иначе
    			ОбластьМакета = Макет.ПолучитьОбласть("ОбластьДеньШапка");
    		Конецесли;
    		
    		ОбластьМакета.Параметры.День= ""+ н+Символы.ПС+ Формат((Тдата),"ДФ=дддд");
    		ТабДок.Присоединить(ОбластьМакета);
    		тт=Формат((Тдата),"ДФ=дддд");
    
    		Тдата= Тдата+ 60*60*24;
    
    	КонецЦикла;
      
    	ТабДокументСотрудникиДни = Новый ТабличныйДокумент;
    	 
    	ТабДокументСотрудникиДни.Очистить();
    	Для каждого СтрокаСотрудника Из ГрафикПериодовРаботы  Цикл //ГрафикПериодовРаботы
    		
    		Если ТипЗнч(ЗначениеФильтра) = Тип("СправочникСсылка.Сотрудники") Тогда
    			Если СтрокаСотрудника.Сотрудник = ЗначениеФильтра тогда
    				ОбластьМакета = Макет.ПолучитьОбласть("ОбластьСотрудникСтрока");
    				ОбластьМакета.Параметры.Сотрудник = СтрокаСотрудника.Сотрудник;
    				ОбластьМакета.Параметры.Должность = СтрокаСотрудника.Должность;
    				ТабДокументСотрудникиДни.Вывести(ОбластьМакета);
    			КонецЕсли;
    	
    		ИначеЕсли ТипЗнч(ЗначениеФильтра) = Тип("СправочникСсылка.Должности") Тогда
    		    Если СтрокаСотрудника.Должность = ЗначениеФильтра тогда
    				ОбластьМакета = Макет.ПолучитьОбласть("ОбластьСотрудникСтрока");
    				ОбластьМакета.Параметры.Сотрудник = СтрокаСотрудника.Сотрудник;
    				ОбластьМакета.Параметры.Должность = СтрокаСотрудника.Должность;
    				ТабДокументСотрудникиДни.Вывести(ОбластьМакета);
           		КонецЕсли;
    		
    		Иначе
    	  		ОбластьМакета = Макет.ПолучитьОбласть("ОбластьСотрудникСтрока");
    			ОбластьМакета.Параметры.Сотрудник = СтрокаСотрудника.Сотрудник;
    			ОбластьМакета.Параметры.Должность = СтрокаСотрудника.Должность;
    			ТабДокументСотрудникиДни.Вывести(ОбластьМакета);
    		КонецЕсли;
    	
    	КонецЦикла;
    	
    	ТабДокумент.Присоединить(ТабДокументСотрудникиДни);
    	
    	ТабДокументДни= Новый ТабличныйДокумент;
    	ТабДокументДни.Очистить();
    	ОбластьМакета = Макет.ПолучитьОбласть("ОбластьДеньСтрока");
    	
    	Для каждого СтрокаДня Из ГрафикПериодовРаботы Цикл
    		
    		Если ТипЗнч(ЗначениеФильтра) = Тип("СправочникСсылка.Сотрудники") Тогда
    			Если СтрокаДня.Сотрудник = ЗначениеФильтра тогда
    	           ТабДокументДни=ЗаполнитьДни(ОбластьМакета, ТабДокументДни, СтрокаДня, вГраница);
    			КонецЕсли;
    	
    		ИначеЕсли ТипЗнч(ЗначениеФильтра) = Тип("СправочникСсылка.Должности") Тогда
    		    Если СтрокаДня.Должность = ЗначениеФильтра тогда
    		 		ТабДокументДни=ЗаполнитьДни(ОбластьМакета, ТабДокументДни, СтрокаДня, вГраница);
    			КонецЕсли;
    		Иначе
        		ТабДокументДни=ЗаполнитьДни(ОбластьМакета, ТабДокументДни, СтрокаДня, вГраница);
    		КонецЕсли;
    		
    	КонецЦикла;
    	
    	ТабДокумент.Присоединить(ТабДокументДни);
    	ТабДок.Вывести( ТабДокумент);
    		
    	Возврат ТабДок;
    	
    КонецФункции
     
    &НаКлиенте
    Процедура Печать(Команда)
    
    	ТабДок = Новый ТабличныйДокумент;
    	ТабДок= ПечататьДок();
    	   
    	Форма = ПолучитьФорму("Обработка.ГрафикРаботыСотрудников.Форма.ФормаПечати", Новый Структура("ТабДок,Период", тАбдок, ПериодПредставление));
        Форма.Открыть();
    	
    КонецПроцедуры
    
    &НаСервере
    Функция ЗаполнитьДни(ОбластьМакета, ТабДокументДни, СтрокаДня, вГраница)
    	 
    	ОбластьМакета.Параметры.День = строкадня.день1;
    	ТабДокументДни.Вывести(ОбластьМакета);
    		
    	ОбластьМакета.Параметры.День = строкадня.день2;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день3;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день4;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день5;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день6;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день7;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день8;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день9;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день10;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день11;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день12;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день13;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день14;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день15;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день16;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день17;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день18;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день19;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день20;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день21;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день22;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день23;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день24;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день25;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день26;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день27;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	ОбластьМакета.Параметры.День = строкадня.день28;
    	ТабДокументДни.Присоединить(ОбластьМакета);
    	Если вГраница > 28 тогда
    		ОбластьМакета.Параметры.День = строкадня.день29;
    		ТабДокументДни.Присоединить(ОбластьМакета);
    	КонецЕсли;
    	Если вГраница > 29 тогда
    		ОбластьМакета.Параметры.День = строкадня.день30;
    		ТабДокументДни.Присоединить(ОбластьМакета);
    	КонецЕсли;
    	Если вГраница > 30 тогда
    		ОбластьМакета.Параметры.День = строкадня.день31;
    		ТабДокументДни.Присоединить(ОбластьМакета);
    	КонецЕсли;
    	
    	Возврат ТабДокументДни;
    	 
    КонецФункции
    
    &НаКлиенте
    // Процедура, обработчик события "ПериодыРаботыПередНачаломДобавления"
    //
    Процедура ПериодыРаботыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
    	
    	Если НЕ Объект.СтруктурнаяЕдиница.Пустая() Тогда
    		Отказ = Истина;
    		ПараметрыОткрытия = Новый Структура("Основание", Новый Структура("СтруктурнаяЕдиница", Объект.СтруктурнаяЕдиница));
    		ОткрытьФорму("Справочник.ПериодыРаботы.Форма.ФормаЭлемента", ПараметрыОткрытия);		
    	КонецЕсли;
    	
    	
    КонецПроцедуры
    
    
    
            
    
    


    Ммм, а куда именно вставить?:))
    Помогите.
    Скину денюжки, если осталось на кошельке =)
    • #8
    • 25.11.2012 23:08
    0
    лучше сначала посмотреть сколько на кошельке ;)
    • #9
    • 26.11.2012 00:02
    0
    200р
    • #10
    • 26.11.2012 10:51
    0
    я уже показывал куда. пишите на st2009st@qip.ru поправлю
    • #11
    • 26.11.2012 16:44
    • Отредактировано: 26.11.2012 16:47:21
    0
    Андрей Ст.
    Лучше так Если ГрафикПериодовРаботы.Количество() >0 Тогда Предупреждение("Не заполнен график!"); Возврат; КонецЕсли; перед ЗаписиРегистра = РегистрыСведений.ВремяРаботыСотрудниковПлан.СоздатьНаборЗаписей();


    имхо, лучше проверку сделать перед записью, в процедуре СохранитьИЗакрыть
    иначе - форма закроется, изменения не сохранятся, а прочитал их юзверь или нет - дело десятое. доказывай ему потом
    &НаКлиенте
    // Процедура - обработчик команды СохранитьИЗакрыть.
    //
    Процедура СохранитьИЗакрыть(Команда)
    	// эти 4 строчки нужно добавить
    	Если ГрафикПериодовРаботы.Количество() <= 0 Тогда 
    		Предупреждение("Не заполнен график!"); 
    		Возврат; 
    	КонецЕсли;
    	
    	СохранитьИзменения(Объект.Период);
    	Если ЭтаФорма.Открыта() Тогда
    		Закрыть();
    	КонецЕсли;
    	
    КонецПроцедуры
    
    • #12
    • 06.12.2012 12:13
    0
    у меня таже проблема, видимо, ето проблема конкретной конфигурации. Я сделал, как писал Коваленко Александр, не помогло.
    На картинке видно как выглядит форма, и наверное проблема через невыбраные дни(не дает выбирать).
    Есть только такая конфигурация, возможно ли ее доработать? И цена вопроса.
    • #13
    • 26.12.2012 06:14
    0
    я так понял это взломаннаый хеликс салон красоты ?) если покупали, то обновитесь, в новых релизах вроде нет такой проблемы. Сейчас у нас стоит 2.0.8.1, всё норм.
    • #14
    • 26.12.2012 13:48
    0
    эта ошибка появляется из за того что в версии, что гуляет по инету за комментирован тот участок который работает с графиком, вот и не работает функционал)) должно ПриСозданииНаСервере выбираться из регистра сведений эти графики и где то эти графики предварительно должны заполняться. то что выше описывали, по поводу избавления от ошибки, проблему это не решит. необходимо процедуру ПрочитатьГрафикРаботыИзРегистра переписывать. даже если обновятся проблема останется.
    • #15
    • 26.12.2012 19:18
    0
    возможно) мы используем дневные смены)
    • #16
    • 25.02.2013 12:38
    0
    Индекс находиться за границами массива!!!!
    такая же проблема и у меня.
    Как нибудь удалось её решить????
    Отзовитесь пожалуйста кто-нибудь!!!
    • #17
    • 15.03.2013 16:51
    0
    max77777
    решили ему проблему,а он "кинул" деньгами,телефон выключил, на почту не отвечает. Коллеги аккуратнее,здесь всё больше и больше жуликов.
    • #18
    • 31.08.2013 19:27
    0
    Здравствуйте, такаяже проблема как и у всех, с 1С Салон красоты HelixSalon_2.0.6.1 немогу сделать график сотрудников
    почта martin_0@pop3.ru
    либо тел 8-926-565-18-18 в Москве м. Цветной бульвар либо Сухаревская, Центр Косметологии.

    Текст ошибки
    {Обработка.ГрафикРаботыСотрудников.Форма.Форма.Форма(519)}: Индекс находится за границами массива
    ЗаписиРегистра.Отбор.СтруктурнаяЕдиница.Установить(ГрафикПериодовРаботы[0].СтруктурнаяЕдиница);
    • #19
    • 01.09.2013 22:15
    0
    Скорее всего нет какого то значения или оно не верное.
Яндекс-директ
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться