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)...или я неправильно понял его конструкцию? и еще не понятно: можно оформить так, чтобы сначала сказать: сумма.шаблон(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 »
|
Записан
|
|
|
|
|