| 
			| 
					
						| 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 час, 33 минуты и 4 секунды: Процедура Сформировать_Колонки(Таб, Стр)
 Таб.ВывестиСекцию(Стр+"|Начало");
 Для ин=1 По Должности.РазмерСписка() Цикл
 зн= Должности.ПолучитьЗначение(ин) ;
 Таб.ВывестиСекцию(Стр+"|Колонка_1");
 КонецЦикла;
 КонецПроцедуры
 
 Процедура Сформировать_Колонки1(Таб, Стр1)
 Таб.ВывестиСекцию(стр1+"|Шапка");
 Для ин=1 По ИК_Цеха.РазмерСписка() Цикл
 зн1= ИК_Цеха.ПолучитьЗначение(ин) ;
 Таб.ПрисоединитьСекцию(стр1+"|Шапка");
 КонецЦикла;
 
 КонецПроцедуры
 
 
 //**************************************************
 Процедура Сформировать()
 Таб = СоздатьОбъект("Таблица");
 Таб.ИсходнаяТаблица("Таблица");
 Таб.ВывестиСекцию("Начало");
 Сформировать_Колонки1(Таб, "Начало");
 
 
 
 
 Таб.ВывестиСекцию("Шапка");
 Сформировать_Колонки(Таб, "Шапка");
 Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
 Для ин=1 По ИК_Цеха.РазмерСписка() Цикл
 зн1= ИК_Цеха.ПолучитьЗначение(ин) ;
 Сформировать_Колонки(Таб, "Строка_1");
 КонецЦикла;
 
 
 Таб.ТолькоПросмотр(1);
 Таб.Показать("Сформировать","");
 КонецПроцедуры
спасибо за подсказку, пока не помогайте, решил сначала таблицу значений создать, а от туда уже колонки выводитьДобавлено через 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 » |  Записан | 
 |  |  | 
	|  |