hiller
							
								Интересующийся 
								
								 
								  Offline
								Пол:   
								жить тоже опасно, говорят это смертельно
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 «  : 12-10-2010 10:22 »   | 
								
								 | 
							  
							 
							Доброго времени суток! создавая отчет в 1с, увяз на одном этапе:  мне нужно, чтобы при нажатии первой кнопки открывался список с цехами(справочник.ИК_Цеха), из которого я добавляю нужные цеха в первый список(с идентификатором "подбор") при нажатии второй кнопки должен открываться список с профессиями(справочник.Должности), из которого я добавляю нужные долности в другой список(с идентификатором "долности") у меня пока только получается, что какой бы из двух справочников я не открыл, все выбранные из него поля добавляются в первый список, либо во все два одновременно. Подскажите, пожалуйста, в чем моя ошибка? Процедура Подбор(); 
  	ОткрытьПодбор("Справочник.ИК_Цеха", "ИК_Цеха");  КонецПроцедуры      //************************************************** Процедура Подбор2(); 
 
  	ОткрытьПодбор("Справочник.Должности", "Должности");	 КонецПроцедуры            
  //************************************************** Процедура ОбработкаПодбора(Элемент,КонтФормы)    	 	Если ПустоеЗначение(Элемент)=0 Тогда 		Если Элемент.ЭтоГруппа()=0 Тогда 			Если ИК_Цеха.НайтиЗначение(Элемент)=0 Тогда 				ИК_Цеха.ДобавитьЗначение(Элемент,""+Элемент+?(Элемент.Наименование = Элемент,""," ")); 			Иначе 				Предупреждение("Цех уже выбран в списке!",10); 			КонецЕсли;                                            	 		КонецЕсли; 	КонецЕсли;  	 	//Если ПустоеЗначение(Элемент)=0 Тогда 	//	Если Элемент.ЭтоГруппа()=0 Тогда 	//		Если Должности.НайтиЗначение(Элемент)=0 Тогда 	//			Должности.ДобавитьЗначение(Элемент,""+Элемент+?(Элемент.Наименование = Элемент,""," ")); 	//		Иначе 	//			Предупреждение("Профессия уже выбрана в списке!",10); 	//		КонецЕсли;                                            	 	//	КонецЕсли; //	КонецЕсли;  // таким образом  добавляется в оба списка//            КонецПроцедуры	// ОбработкаПодбора
  //**************************************************   
      Процедура ОбработкаПодбора2(ЭЛ,Конт)
  	 	Если ПустоеЗначение(ЭЛ)=0 Тогда 		Если ЭЛ.ЭтоГруппа()=0 Тогда 			Если Должности.НайтиЗначение(ЭЛ)=0 Тогда 				Должности.ДобавитьЗначение(ЭЛ.Наименование,"ЭЛ" ); 			Иначе 				Предупреждение("Профессия уже выбрана в списке!",10); 			КонецЕсли;                                            	 		КонецЕсли; 	КонецЕсли;            КонецПроцедуры	  //а так только в первый  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 12-10-2010 11:40 от hiller »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Kivals
							
						 | 
						
							
								  | 
								
									
									 « Ответ #1 : 12-10-2010 14:42 »   | 
								
								 | 
							  
							 
							Перед принятоем решения в какой список добавить проверяй вид выбранного элемента: Процедура ОбработкаПодбора(Элемент,КонтФормы) 	Если ПустоеЗначение(Элемент)=1 Тогда Возврат; КонецЕсли; 	Если Элемент.ЭтоГруппа()=1 Тогда Возврат; КонецЕсли; 	 	Если Элемент.Вид()="ИК_Цеха" Тогда 		Сп=ИК_Цеха; 	ИначеЕсли Элемент.Вид()="Должности" Тогда 		Сп=Должности; 	Иначе 		Возврат; 	КонецЕсли; 	Если Сп.НайтиЗначение(Элемент)=0 Тогда 		Сп.ДобавитьЗначение(Элемент,""+Элемент+?(Элемент.Наименование = Элемент,""," ")); 	Иначе 		Предупреждение("Элемент уже выбран в списке!",10); 	КонецЕсли; КонецПроцедуры	// ОбработкаПодбора  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							hiller
							
								Интересующийся 
								
								 
								  Offline
								Пол:   
								жить тоже опасно, говорят это смертельно
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #2 : 13-10-2010 05:27 »   | 
								
								 | 
							  
							 
							большое спасибо, а то я уже все ногти сгрыз над этими строчками Добавлено через 4 часа, 21 минуту и 58 секунд:извините, но у меня еще один вопрос есть: теперь я пытаюсь сделать так:             при нажатии кнопки "сформировать" открывается таблица отчета, в которой секции добавляются те, которые попали в списки(в колонки "цеха", в строки "Долности").......потом посчитать сколько людей выбранных должностей работают в выбранных цехах...но это потом.... как мне грамотно организовать отчет?  Процедура Сформировать_Колонки(Таб, Стр)        	 	Таб.ВывестиСекцию(Стр+"|Начало");   		Для ин=1 По Должности.РазмерСписка() Цикл    				зн= Должности.ПолучитьЗначение(ин) ; 		Таб.ВывестиСекцию(Стр+"|Колонка_1"); 	КонецЦикла;                  КонецПроцедуры
  	 Процедура Сформировать_Колонки1(Таб, Стр1)  Таб.ВывестиСекцию(стр1+"|1");   		Для ин=1 По ИК_Цеха.РазмерСписка() Цикл    				зн1= ИК_Цеха.ПолучитьЗначение(ин) ; 		Таб.ВывестиСекцию(стр1+"|2"); 	КонецЦикла;     	 КонецПроцедуры   
 
   //************************************************** Процедура Сформировать() 	Таб = СоздатьОбъект("Таблица"); 	Таб.ИсходнаяТаблица("Таблица");  	    Таб.ВывестиСекцию("2");  Сформировать_Колонки1(Таб, "2");
  	 	        	 Таб.ВывестиСекцию("Шапка");  Сформировать_Колонки(Таб, "Шапка"); 	Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); Для ин=1 По ИК_Цеха.РазмерСписка() Цикл  			зн1= ИК_Цеха.ПолучитьЗначение(ин) ;  	Сформировать_Колонки(Таб, "Строка_1"); КонецЦикла;        
  	 	Таб.ТолькоПросмотр(1); 	Таб.Показать("Сформировать",""); КонецПроцедуры  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 13-10-2010 09:49 от hiller »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Kivals
							
						 | 
						
							
								  | 
								
									
									«  Ответ #3 : 13-10-2010 18:23 »    | 
								
								 | 
							  
							 
							Таб.ПрисоединитьСекцию() ? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							hiller
							
								Интересующийся 
								
								 
								  Offline
								Пол:   
								жить тоже опасно, говорят это смертельно
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #4 : 14-10-2010 06:33 »   | 
								
								 | 
							  
							 
							а ну да, в случае процедуры Сформировать_Колонки1 будет Таб.ПрисоединитьСекцию(); е меня получается такая таблица: секции:......... Начало.......... Колонка_1  Шапка..........<зн1>................<зн> строка_1но не получается сделать ак, чтобы правильно получалась таблица выходит так: ......................|Цех1|.......|Цех2|.......|Цех3| ........................................|.зн...|............... зн1..............|........................................ ....................|....................................... профессия1|......................................... проФессия2|.......................................... профессия3|......................................... Добавлено через 9 минут и 39 секунд: Процедура Сформировать_Колонки(Таб, Стр)        	 	Таб.ВывестиСекцию(Стр+"|Начало");   		Для ин=1 По Должности.РазмерСписка() Цикл    				зн= Должности.ПолучитьЗначение(ин) ; 		Таб.ВывестиСекцию(Стр+"|Колонка_1"); 	КонецЦикла;                  КонецПроцедуры
  	 Процедура Сформировать_Колонки1(Таб, Стр1)  Таб.ВывестиСекцию(стр1+"|Шапка");   		Для ин=1 По ИК_Цеха.РазмерСписка() Цикл    				зн1= ИК_Цеха.ПолучитьЗначение(ин) ; 		Таб.ПрисоединитьСекцию(стр1+"|Шапка"); 	КонецЦикла;     	 КонецПроцедуры   
 
   //************************************************** Процедура Сформировать() 	Таб = СоздатьОбъект("Таблица"); 	Таб.ИсходнаяТаблица("Таблица");  	    Таб.ВывестиСекцию("Начало");  Сформировать_Колонки1(Таб, "Начало");
  	 	        	 Таб.ВывестиСекцию("Шапка");  Сформировать_Колонки(Таб, "Шапка"); 	Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); Для ин=1 По ИК_Цеха.РазмерСписка() Цикл  			зн1= ИК_Цеха.ПолучитьЗначение(ин) ;  	Сформировать_Колонки(Таб, "Строка_1"); КонецЦикла;        
  	 	Таб.ТолькоПросмотр(1); 	Таб.Показать("Сформировать",""); КонецПроцедуры  Добавлено через 1 час, 33 минуты и 4 секунды:спасибо за подсказку, пока не помогайте, решил сначала таблицу значений создать, а от туда уже колонки выводить Добавлено через 1 день, 1 час, 14 минут и 2 секунды:поможете еще с таким вопросом: мне нужно расшифровать чило в слова, т.е. чтобы писалось 1100 тысяча сто рублей я пишу так:  сумма= "оклад составляет" + (оклад*ставка)+ (оклад*ставка#ЧП)+ "рублей"; как должно выглядеть выражение?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 15-10-2010 09:29 от hiller »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Kivals
							
						 | 
						
							
								  | 
								
									
									 « Ответ #5 : 15-10-2010 09:50 »   | 
								
								 | 
							  
							 
							сумма= Шаблон("оклад составляет [оклад*ставка] [оклад*ставка#ЧПДС]"); // "рублей" для ЧПДС уже не надо, если правильно выбран spl-файл то название валюты возьмет из него... 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							hiller
							
								Интересующийся 
								
								 
								  Offline
								Пол:   
								жить тоже опасно, говорят это смертельно
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #6 : 15-10-2010 10:11 »   | 
								
								 | 
							  
							 
							сумма= Шаблон("оклад составляет [оклад*ставка] [оклад*ставка#ЧПДС]"); // "рублей" для ЧПДС уже не надо, если правильно выбран spl-файл то название валюты возьмет из него...
  СПАСИБО, а я думал, как можно организовать с квадратными скобками...? Добавлено через 5 минут и 25 секунд:получается у шаблона числовое выражение по умолчанию (1)...или я неправильно понял его конструкцию? и еще не понятно: можно оформить так, чтобы сначала сказать:    а потом писать   ?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 15-10-2010 10:17 от hiller »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Kivals
							
						 | 
						
							
								  | 
								
									
									 « Ответ #7 : 16-10-2010 08:00 »   | 
								
								 | 
							  
							 
							Получается неправильно. Шаблон - это отдельная функция, которая подставляет значения внутрь квадратных скобок форматной строки. Так что выражение  Сумма.Шаблон() уже само по себе не верно. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							hiller
							
								Интересующийся 
								
								 
								  Offline
								Пол:   
								жить тоже опасно, говорят это смертельно
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #8 : 18-10-2010 04:38 »   | 
								
								 | 
							  
							 
							понял, спасибо 
  Добавлено через 1 день, 7 часов, 13 минут и 4 секунды: помогите еще пжст с такой проблемой:
  есть много секций и нужно сделать так, чтобы если при выводе на печать какая либо секция полностью не умещается на одном листе(начинается в конце 1-ой страницы и продолжается на другой), то эта секция полностью печатается на новом листе?
  объяснил простую фигню, наверное, очень мудрено))) 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 19-10-2010 11:51 от hiller »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Kivals
							
						 | 
						
							
								  | 
								
									
									 « Ответ #9 : 19-10-2010 12:31 »   | 
								
								 | 
							  
							 
							Добавлено через 1 минуту и 3 секунды:Этот флажок нужно установить для всех строк блока, кроме последней  
						 | 
					 
					
						
							
								
									 
									
								 | 
							 
								| 
									« Последнее редактирование: 19-10-2010 12:32 от Kivals »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							hiller
							
								Интересующийся 
								
								 
								  Offline
								Пол:   
								жить тоже опасно, говорят это смертельно
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #10 : 19-10-2010 13:15 »   | 
								
								 | 
							  
							 
							спасибо, получилось, только все наоборот(на последнюю секцию устанавливаю флажок, а для остальных(секций) оба флага сняты)
  Добавлено через 1 день, 18 часов, 16 минут и 48 секунд: а из-за чего может вывадится пустой лист после каждого заполненного?
  Добавлено через 22 часа, 4 минуты и 43 секунды: помгоите ещее, пожалуйста....я выбираю пподразделение: подраз=договор.подразделение     этот справочник иерархический, а так он из него выбирает только последний уровень, так сказать, отделение, а как выбрать подразделение, в которое входит это отделение? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 22-10-2010 05:36 от hiller »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							AndyG
							
								Постоялец 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #11 : 22-10-2010 12:37 »   | 
								
								 | 
							  
							 
							а из-за чего может вывадится пустой лист после каждого заполненного? возможно  есть перевод страницы на таблице? помгоите ещее, пожалуйста....я выбираю пподразделение: подраз=договор.подразделение     этот справочник иерархический, а так он из него выбирает только последний уровень, так сказать, отделение, а как выбрать подразделение, в которое входит это отделение? возможно Справочник.ВыборГруппы(1) поможет?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Kivals
							
						 | 
						
							
								  | 
								
									
									 « Ответ #12 : 24-10-2010 08:36 »   | 
								
								 | 
							  
							 
							а из-за чего может вывадится пустой лист после каждого заполненного?
  Там же в настройках - второй флажок не трогал?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							hiller
							
								Интересующийся 
								
								 
								  Offline
								Пол:   
								жить тоже опасно, говорят это смертельно
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #13 : 25-10-2010 05:13 »   | 
								
								 | 
							  
							 
							неа, другой снят Добавлено через 1 час, 10 минут и 4 секунды:помгоите ещее, пожалуйста....я выбираю пподразделение: подраз=договор.подразделение     этот справочник иерархический, а так он из него выбирает только последний уровень, так сказать, отделение, а как выбрать подразделение, в которое входит это отделение? возможно Справочник.ВыборГруппы(1) поможет? что-то не помогло Добавлено через 23 часа, 38 минут и 2 секунды:помогло создать еще цех=Договор.Подразделение.Родитель     
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 26-10-2010 06:01 от hiller »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							hiller
							
								Интересующийся 
								
								 
								  Offline
								Пол:   
								жить тоже опасно, говорят это смертельно
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #14 : 28-10-2010 06:21 »   | 
								
								 | 
							  
							 
							еще с таким столкнулся, точнее вернулся к старому:
  есть много цехов и много профессий, которые добавляются пользователем из справочника, каждый в свой список потом эти элементы добавляются в секции (профессии в строки, цеха в колонки) это дело я реализовал (то что у меня получилось прикрепил), но как-то корявенько....и у меня добавляются две лишние строки 
  Помогите, пожалуйста с такой проблемой
  Добавлено через 5 дней, 3 часа, 47 минут и 26 секунд: с этим разобрался
  Добавлено через 5 дней, 20 часов, 29 минут и 57 секунд: А вы не подскажите как написать так, что:
  Если в списке есть запись с должностью Х,  то ТабЗ.НоваяСтрока(); ТабЗ.Долж=сотр.Должность.Получить(ДатаА); 
						 | 
					 
					
						
							
								
									 
									
								 | 
							 
								| 
									« Последнее редактирование: 08-11-2010 06:38 от hiller »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	 |