Поиск  Пользователи  Правила  Войти
RSS
Можно ли сохранять ТаблицуЗначений???1С 7.7.Комплексная(дописанная - переписанная)
 
"Подскажите пожалуйста с вопросиком.

Есть обработка "ПакетОтчетовДоп" с печатной формой "Отчет по ордерам", в которой есть поле "Неисправность"(НА ЧТО ОБРАЩАЮ ВАШЕ ВНИМАНИЕ!!!).
Вообще суть обработки состоит в том,чтобы взять и вывести отчет по ОРДЕРАМ сразу для всех сотрудников(к примеру их туда попало 3 человека - Осипов,Иванов и Петров).
Всё отлично формируеться за исключения одной маленькой прихоти БОССА....чтобы после формирования группы таких отчетов при двойном клике на ячейку "Неисправность" весь отчет отсортировался по этой самой графе.

И вот тут возникает такая проблемка - Все эти 3 отчета формировались с помощью ТаблицыЗначений(ТЗ1)
....
ТЗ1.НомерДок = Док.ТекущийДокумент();
ТЗ1.ДатаДок = Док.ДатаДок;
ТЗ1.ДатаОкончания = Док.ДатаОкончания;
....
и получаеться что каждый раз при выборе следующего сотрудника для отчета предыдущие затирались.

Поэтому когда все отчеты сформированы и нажать двойным кликом на ячейку "Неисправность" на любом из них,то сортируеться и соответственно обновляеться только отчет по последнему сотруднику.

//-------------------------------------------
Процедура ОбновитьТаблицу()
...
  ТЗ1.ВыбратьСтроки();
  Пока ТЗ1.ПолучитьСтроку() = 1 цикл
       Таб.ВывестиСекцию("Строка");
       НомерПП = НомерПП + 1;
  КонецЦикла;
...
КонецПроцедуры
//-------------------------------------------
Процедура ОбработкаЯчейкиТаблицы(Зн, Стандарт, Таб, Адр)
...
Если Зн = "Неисправность" тогда
   ТЗ1.Сортировать(Зн);
   ОбновитьТаблицу();
КонецЕсли;
КонецПроцедуры
//-------------------------------------------

Теперь не знаю как можно сделать чтобы из ТЗ1 каждый раз все поля сохранялись куда-то!!!!!!,чтобы впоследствии сортировалось всё правильно...

"
 
каков её смысл обработки ?
 
Вообще суть обработки состоит в том,чтобы взять и вывести отчет по ОРДЕРАМ сразу для всех сотрудников(к примеру их туда попало 3 человека - Осипов,Иванов и Петров).
 
> Вообще суть обработки состоит в том,чтобы взять и вывести отчет по ОРДЕРАМ сразу для всех сотрудников(к примеру их туда попало 3 человека - Осипов,Иванов и Петров).

какой ордер ? подробнее
 
Как формируется отчет по каждому сотруднику? Запросом? Перебором документов (ордеров)?
 
"это дописанная конфа,в ней есть док.Ордер,в котором указываються:
- контрагент,сдавший оборудование в ремонт;
- сотрудник,ответственный за выполнение работ;
...ну там датаприема,датаВыдачи оборудования,вобщем ещё много чего."
 
перебором документов
 
"Так, идем далее, отчеты вы делаете по каждому сотруднику отдельно, то есть сформировали по Иванову, а когда начинаете формировать по Петрову, ТаблицаЗначений очищается? Так?

Вот маленький пример (на вскидку):

Если ТЗ1.КоличествоСтрок()>0 Тогда
Рез=Вопрос("В талице уже есть данные, очистить ее?",3);
   Если Рез=2 Тогда
       Возврат;
КонецЕсли;
Если Рез=6 Тогда
   ТЗ1.УдалитьСтроки();
КонецЕсли;
КонецЕсли;
Док=СоздатьОбъект("Документ.Ордер");
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент()>0 Цикл
   Если Док.Проведен()=0 Тогда
       Продолжить;
КонецЕсли;
Если Док.Сотрудник<>ВыбСотрудник Тогда
   Продолжить;
КонецЕсли;
Стр=ТЗ1.КоличествоСтрок()+1;
ТЗ1.НовыяСтрока(Стр);
ТЗ1.НомерДок=Док.НомерДок;
ТЗ1.ДатаДок=Док.ДатаДок;
ТЗ1.Контрагент=Док.Контрагент;
ТЗ1.ДатаПриема=Док.ДатаПриема;
ТЗ1.ДатаВыдачи=Док.ДатаВыдачи;
//...
//вобщем ещё много чего.
//...
КонецЦикла;

НачДата и КонДата период выбора документов, ВыбСотрудник - по кому формируем отчет, это реквизиты формы ввода.

Если пример ни на что не натолкнет, то приведите свой код.
"
 
"> то есть сформировали по Иванову, а когда начинаете формировать по Петрову, ТаблицаЗначений очищается? Так?

Отличный пример - все вот так и происходит,с формированием самих отчетов у меня проблем не возникает.

Только как я понимаю код,у вас будет одна ТЗ1, наполненная данными по всем сотрудникам????
Ну даже если так как же эту ТЗ1 потом отсортировать????

А проблема как раз в том, что при попытке отсортировать

    //-------------------------------------------
    Процедура ОбновитьТаблицу()
       ...
       ТЗ1.ВыбратьСтроки();
Пока ТЗ1.ПолучитьСтроку() = 1 цикл
Таб.ВывестиСекцию("Строка");
НомерПП = НомерПП + 1;
КонецЦикла;
       ....
    КонецПроцедуры
    //-------------------------------------------
    Процедура ОбработкаЯчейкиТаблицы(Зн, Стандарт, Таб, Адр)
Если Зн = "Неисправность" тогда
   ТЗ1.Сортировать(Зн);
   ОбновитьТаблицу();
КонецЕсли;        
    КонецПроцедуры

по "Неисправность" любой из этих отчетов в результате обновляеться ТЗ1,в которой остались поля сформированные по последнему сотруднику

"
 
"вот для этого :
> ТЗ1.НовыяСтрока(Стр);
З,Ы, пока писал, вижу что сам увидел!"
Читают тему

Читайте нас: