Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: работа со списками в 7.7  (Прочитано 22128 раз)
0 Пользователей и 1 Гость смотрят эту тему.
hiller
Интересующийся

ru
Offline 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
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 12-10-2010 14:42 » 

Перед принятоем решения в какой список добавить проверяй вид выбранного элемента:
Код:
Процедура ОбработкаПодбора(Элемент,КонтФормы)
Если ПустоеЗначение(Элемент)=1 Тогда Возврат; КонецЕсли;
Если Элемент.ЭтоГруппа()=1 Тогда Возврат; КонецЕсли;

Если Элемент.Вид()="ИК_Цеха" Тогда
Сп=ИК_Цеха;
ИначеЕсли Элемент.Вид()="Должности" Тогда
Сп=Должности;
Иначе
Возврат;
КонецЕсли;
Если Сп.НайтиЗначение(Элемент)=0 Тогда
Сп.ДобавитьЗначение(Элемент,""+Элемент+?(Элемент.Наименование = Элемент,""," "));
Иначе
Предупреждение("Элемент уже выбран в списке!",10);
КонецЕсли;
КонецПроцедуры // ОбработкаПодбора
Записан
hiller
Интересующийся

ru
Offline 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
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 13-10-2010 18:23 » 

Таб.ПрисоединитьСекцию() ?
Записан
hiller
Интересующийся

ru
Offline 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
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 15-10-2010 09:50 » 

сумма= Шаблон("оклад составляет [оклад*ставка] [оклад*ставка#ЧПДС]"); // "рублей" для ЧПДС уже не надо, если правильно выбран spl-файл то название валюты возьмет из него...
Записан
hiller
Интересующийся

ru
Offline Offline
Пол: Мужской
жить тоже опасно, говорят это смертельно


« Ответ #6 : 15-10-2010 10:11 » 

сумма= Шаблон("оклад составляет [оклад*ставка] [оклад*ставка#ЧПДС]"); // "рублей" для ЧПДС уже не надо, если правильно выбран spl-файл то название валюты возьмет из него...

СПАСИБО, а я думал, как можно организовать с квадратными скобками...?

Добавлено через 5 минут и 25 секунд:
получается у шаблона числовое выражение по умолчанию (1)...или я неправильно понял его конструкцию?

и еще не понятно: можно оформить так, чтобы сначала сказать:
Код:
сумма.шаблон(1); 
 а потом писать
Код:
сумма="      [     ]     ";
?
« Последнее редактирование: 15-10-2010 10:17 от hiller » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 16-10-2010 08:00 » 

Получается неправильно.
Шаблон - это отдельная функция, которая подставляет значения внутрь квадратных скобок форматной строки. Так что выражение
Сумма.Шаблон() уже само по себе не верно.
Записан
hiller
Интересующийся

ru
Offline Offline
Пол: Мужской
жить тоже опасно, говорят это смертельно


« Ответ #8 : 18-10-2010 04:38 » 

понял, спасибо

Добавлено через 1 день, 7 часов, 13 минут и 4 секунды:
помогите еще пжст с такой проблемой:

есть много секций и нужно сделать так, чтобы если при выводе на печать какая либо секция полностью не умещается на одном листе(начинается в конце 1-ой страницы и продолжается на другой), то эта секция полностью печатается на новом листе?

объяснил простую фигню, наверное, очень мудрено)))
« Последнее редактирование: 19-10-2010 11:51 от hiller » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 19-10-2010 12:31 » 



Добавлено через 1 минуту и 3 секунды:
Этот флажок нужно установить для всех строк блока, кроме последней

* 1cv7_tab_page_position.png (26.25 Кб - загружено 3363 раз.)
« Последнее редактирование: 19-10-2010 12:32 от Kivals » Записан
hiller
Интересующийся

ru
Offline Offline
Пол: Мужской
жить тоже опасно, говорят это смертельно


« Ответ #10 : 19-10-2010 13:15 » 

спасибо, получилось, только все наоборот(на последнюю секцию устанавливаю флажок, а для остальных(секций) оба флага сняты)

Добавлено через 1 день, 18 часов, 16 минут и 48 секунд:
а из-за чего может вывадится пустой лист после каждого заполненного?

Добавлено через 22 часа, 4 минуты и 43 секунды:
помгоите ещее, пожалуйста....я выбираю пподразделение: подраз=договор.подразделение   
этот справочник иерархический, а так он из него выбирает только последний уровень, так сказать, отделение, а как выбрать подразделение, в которое входит это отделение?
« Последнее редактирование: 22-10-2010 05:36 от hiller » Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #11 : 22-10-2010 12:37 » 

Цитата
а из-за чего может вывадится пустой лист после каждого заполненного?
возможно  есть перевод страницы на таблице?

Цитата
помгоите ещее, пожалуйста....я выбираю пподразделение: подраз=договор.подразделение   
этот справочник иерархический, а так он из него выбирает только последний уровень, так сказать, отделение, а как выбрать подразделение, в которое входит это отделение?

возможно Справочник.ВыборГруппы(1) поможет?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 24-10-2010 08:36 » 

Цитата: hiller
а из-за чего может вывадится пустой лист после каждого заполненного?
Там же в настройках - второй флажок не трогал?
Записан
hiller
Интересующийся

ru
Offline Offline
Пол: Мужской
жить тоже опасно, говорят это смертельно


« Ответ #13 : 25-10-2010 05:13 » 

неа, другой снят

Добавлено через 1 час, 10 минут и 4 секунды:

Цитата
помгоите ещее, пожалуйста....я выбираю пподразделение: подраз=договор.подразделение   
этот справочник иерархический, а так он из него выбирает только последний уровень, так сказать, отделение, а как выбрать подразделение, в которое входит это отделение?

возможно Справочник.ВыборГруппы(1) поможет?

что-то не помогло

Добавлено через 23 часа, 38 минут и 2 секунды:
помогло создать еще

Код:
цех=Договор.Подразделение.Родитель 


« Последнее редактирование: 26-10-2010 06:01 от hiller » Записан
hiller
Интересующийся

ru
Offline Offline
Пол: Мужской
жить тоже опасно, говорят это смертельно


« Ответ #14 : 28-10-2010 06:21 » 

еще с таким столкнулся, точнее вернулся к старому:

есть много цехов и много профессий, которые добавляются пользователем из справочника, каждый в свой список
потом эти элементы добавляются в секции (профессии в строки, цеха в колонки)
это дело я реализовал (то что у меня получилось прикрепил), но как-то корявенько....и у меня добавляются две лишние строки

Помогите, пожалуйста с такой проблемой

Добавлено через 5 дней, 3 часа, 47 минут и 26 секунд:
с этим разобрался

Добавлено через 5 дней, 20 часов, 29 минут и 57 секунд:
А вы не подскажите как написать так, что:

Если в списке есть запись с должностью Х,  то ТабЗ.НоваяСтрока(); ТабЗ.Долж=сотр.Должность.Получить(ДатаА);

* rabochie-sdelshiki.ert (226 Кб - загружено 807 раз.)
« Последнее редактирование: 08-11-2010 06:38 от hiller » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines