Можно ли сохранять ТаблицуЗначений???1С 7.7.Комплексная(дописанная - переписанная)
Показывать по
10
20
40
сообщений
- 1
- 2
21.09.2010
12:46
#1
"Подскажите пожалуйста с вопросиком.
Есть обработка "ПакетОтчетовДоп" с печатной формой "Отчет по ордерам", в которой есть поле "Неисправность"(НА ЧТО ОБРАЩАЮ ВАШЕ ВНИМАНИЕ!!!).
Вообще суть обработки состоит в том,чтобы взять и вывести отчет по ОРДЕРАМ сразу для всех сотрудников(к примеру их туда попало 3 человека - Осипов,Иванов и Петров).
Всё отлично формируеться за исключения одной маленькой прихоти БОССА....чтобы после формирования группы таких отчетов при двойном клике на ячейку "Неисправность" весь отчет отсортировался по этой самой графе.
И вот тут возникает такая проблемка - Все эти 3 отчета формировались с помощью ТаблицыЗначений(ТЗ1)
....
ТЗ1.НомерДок = Док.ТекущийДокумент();
ТЗ1.ДатаДок = Док.ДатаДок;
ТЗ1.ДатаОкончания = Док.ДатаОкончания;
....
и получаеться что каждый раз при выборе следующего сотрудника для отчета предыдущие затирались.
Поэтому когда все отчеты сформированы и нажать двойным кликом на ячейку "Неисправность" на любом из них,то сортируеться и соответственно обновляеться только отчет по последнему сотруднику.
//-------------------------------------------
Процедура ОбновитьТаблицу()
...
ТЗ1.ВыбратьСтроки();
Пока ТЗ1.ПолучитьСтроку() = 1 цикл
Таб.ВывестиСекцию("Строка");
НомерПП = НомерПП + 1;
КонецЦикла;
...
КонецПроцедуры
//-------------------------------------------
Процедура ОбработкаЯчейкиТаблицы(Зн, Стандарт, Таб, Адр)
...
Если Зн = "Неисправность" тогда
ТЗ1.Сортировать(Зн);
ОбновитьТаблицу();
КонецЕсли;
КонецПроцедуры
//-------------------------------------------
Теперь не знаю как можно сделать чтобы из ТЗ1 каждый раз все поля сохранялись куда-то!!!!!!,чтобы впоследствии сортировалось всё правильно...
"
Есть обработка "ПакетОтчетовДоп" с печатной формой "Отчет по ордерам", в которой есть поле "Неисправность"(НА ЧТО ОБРАЩАЮ ВАШЕ ВНИМАНИЕ!!!).
Вообще суть обработки состоит в том,чтобы взять и вывести отчет по ОРДЕРАМ сразу для всех сотрудников(к примеру их туда попало 3 человека - Осипов,Иванов и Петров).
Всё отлично формируеться за исключения одной маленькой прихоти БОССА....чтобы после формирования группы таких отчетов при двойном клике на ячейку "Неисправность" весь отчет отсортировался по этой самой графе.
И вот тут возникает такая проблемка - Все эти 3 отчета формировались с помощью ТаблицыЗначений(ТЗ1)
....
ТЗ1.НомерДок = Док.ТекущийДокумент();
ТЗ1.ДатаДок = Док.ДатаДок;
ТЗ1.ДатаОкончания = Док.ДатаОкончания;
....
и получаеться что каждый раз при выборе следующего сотрудника для отчета предыдущие затирались.
Поэтому когда все отчеты сформированы и нажать двойным кликом на ячейку "Неисправность" на любом из них,то сортируеться и соответственно обновляеться только отчет по последнему сотруднику.
//-------------------------------------------
Процедура ОбновитьТаблицу()
...
ТЗ1.ВыбратьСтроки();
Пока ТЗ1.ПолучитьСтроку() = 1 цикл
Таб.ВывестиСекцию("Строка");
НомерПП = НомерПП + 1;
КонецЦикла;
...
КонецПроцедуры
//-------------------------------------------
Процедура ОбработкаЯчейкиТаблицы(Зн, Стандарт, Таб, Адр)
...
Если Зн = "Неисправность" тогда
ТЗ1.Сортировать(Зн);
ОбновитьТаблицу();
КонецЕсли;
КонецПроцедуры
//-------------------------------------------
Теперь не знаю как можно сделать чтобы из ТЗ1 каждый раз все поля сохранялись куда-то!!!!!!,чтобы впоследствии сортировалось всё правильно...
"
21.09.2010
13:07
#3
Вообще суть обработки состоит в том,чтобы взять и вывести отчет по ОРДЕРАМ сразу для всех сотрудников(к примеру их туда попало 3 человека - Осипов,Иванов и Петров).
21.09.2010
13:08
#4
> Вообще суть обработки состоит в том,чтобы взять и вывести отчет по ОРДЕРАМ сразу для всех сотрудников(к примеру их туда попало 3 человека - Осипов,Иванов и Петров).
какой ордер ? подробнее
какой ордер ? подробнее
21.09.2010
13:43
#5
Как формируется отчет по каждому сотруднику? Запросом? Перебором документов (ордеров)?
21.09.2010
14:32
#6
"это дописанная конфа,в ней есть док.Ордер,в котором указываються:
- контрагент,сдавший оборудование в ремонт;
- сотрудник,ответственный за выполнение работ;
...ну там датаприема,датаВыдачи оборудования,вобщем ещё много чего."
- контрагент,сдавший оборудование в ремонт;
- сотрудник,ответственный за выполнение работ;
...ну там датаприема,датаВыдачи оборудования,вобщем ещё много чего."
21.09.2010
15:41
#8
"Так, идем далее, отчеты вы делаете по каждому сотруднику отдельно, то есть сформировали по Иванову, а когда начинаете формировать по Петрову, ТаблицаЗначений очищается? Так?
Вот маленький пример (на вскидку):
Если ТЗ1.КоличествоСтрок()>0 Тогда
Рез=Вопрос("В талице уже есть данные, очистить ее?",3);
Если Рез=2 Тогда
Возврат;
КонецЕсли;
Если Рез=6 Тогда
ТЗ1.УдалитьСтроки();
КонецЕсли;
КонецЕсли;
Док=СоздатьОбъект("Документ.Ордер");
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент()>0 Цикл
Если Док.Проведен()=0 Тогда
Продолжить;
КонецЕсли;
Если Док.Сотрудник<>ВыбСотрудник Тогда
Продолжить;
КонецЕсли;
Стр=ТЗ1.КоличествоСтрок()+1;
ТЗ1.НовыяСтрока(Стр);
ТЗ1.НомерДок=Док.НомерДок;
ТЗ1.ДатаДок=Док.ДатаДок;
ТЗ1.Контрагент=Док.Контрагент;
ТЗ1.ДатаПриема=Док.ДатаПриема;
ТЗ1.ДатаВыдачи=Док.ДатаВыдачи;
//...
//вобщем ещё много чего.
//...
КонецЦикла;
НачДата и КонДата период выбора документов, ВыбСотрудник - по кому формируем отчет, это реквизиты формы ввода.
Если пример ни на что не натолкнет, то приведите свой код.
"
Вот маленький пример (на вскидку):
Если ТЗ1.КоличествоСтрок()>0 Тогда
Рез=Вопрос("В талице уже есть данные, очистить ее?",3);
Если Рез=2 Тогда
Возврат;
КонецЕсли;
Если Рез=6 Тогда
ТЗ1.УдалитьСтроки();
КонецЕсли;
КонецЕсли;
Док=СоздатьОбъект("Документ.Ордер");
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент()>0 Цикл
Если Док.Проведен()=0 Тогда
Продолжить;
КонецЕсли;
Если Док.Сотрудник<>ВыбСотрудник Тогда
Продолжить;
КонецЕсли;
Стр=ТЗ1.КоличествоСтрок()+1;
ТЗ1.НовыяСтрока(Стр);
ТЗ1.НомерДок=Док.НомерДок;
ТЗ1.ДатаДок=Док.ДатаДок;
ТЗ1.Контрагент=Док.Контрагент;
ТЗ1.ДатаПриема=Док.ДатаПриема;
ТЗ1.ДатаВыдачи=Док.ДатаВыдачи;
//...
//вобщем ещё много чего.
//...
КонецЦикла;
НачДата и КонДата период выбора документов, ВыбСотрудник - по кому формируем отчет, это реквизиты формы ввода.
Если пример ни на что не натолкнет, то приведите свой код.
"
22.09.2010
21:58
#9
"> то есть сформировали по Иванову, а когда начинаете формировать по Петрову, ТаблицаЗначений очищается? Так?
Отличный пример - все вот так и происходит,с формированием самих отчетов у меня проблем не возникает.
Только как я понимаю код,у вас будет одна ТЗ1, наполненная данными по всем сотрудникам????
Ну даже если так как же эту ТЗ1 потом отсортировать????
А проблема как раз в том, что при попытке отсортировать
//-------------------------------------------
Процедура ОбновитьТаблицу()
...
ТЗ1.ВыбратьСтроки();
Пока ТЗ1.ПолучитьСтроку() = 1 цикл
Таб.ВывестиСекцию("Строка");
НомерПП = НомерПП + 1;
КонецЦикла;
....
КонецПроцедуры
//-------------------------------------------
Процедура ОбработкаЯчейкиТаблицы(Зн, Стандарт, Таб, Адр)
Если Зн = "Неисправность" тогда
ТЗ1.Сортировать(Зн);
ОбновитьТаблицу();
КонецЕсли;
КонецПроцедуры
по "Неисправность" любой из этих отчетов в результате обновляеться ТЗ1,в которой остались поля сформированные по последнему сотруднику
"
Отличный пример - все вот так и происходит,с формированием самих отчетов у меня проблем не возникает.
Только как я понимаю код,у вас будет одна ТЗ1, наполненная данными по всем сотрудникам????
Ну даже если так как же эту ТЗ1 потом отсортировать????
А проблема как раз в том, что при попытке отсортировать
//-------------------------------------------
Процедура ОбновитьТаблицу()
...
ТЗ1.ВыбратьСтроки();
Пока ТЗ1.ПолучитьСтроку() = 1 цикл
Таб.ВывестиСекцию("Строка");
НомерПП = НомерПП + 1;
КонецЦикла;
....
КонецПроцедуры
//-------------------------------------------
Процедура ОбработкаЯчейкиТаблицы(Зн, Стандарт, Таб, Адр)
Если Зн = "Неисправность" тогда
ТЗ1.Сортировать(Зн);
ОбновитьТаблицу();
КонецЕсли;
КонецПроцедуры
по "Неисправность" любой из этих отчетов в результате обновляеться ТЗ1,в которой остались поля сформированные по последнему сотруднику
"
- 1
- 2
Читают тему
(гостей: 1)