1с 7.7 Бухгалтерия Подскажите как заполнить значениями таблицу Печатной формы?
12.08.2009
14:59
#1
"Сделал отчет "Возврат товаров", все данные получены, но встал вопрос каким методом их заполнить в таблицу.
вот код отчета:
Процедура Выполнить()
Док=СоздатьОбъект("Документ.РасходнаяНакладная");
Док.ВыбратьДокументы(Дата1,Дата2);
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("""");
Таб.ВывестиСекцию("Шапка");
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.ВозвратГП=1 Тогда
ДатаПер=Док.ПолучитьАтрибут("ДатаДок");
НомерДока=Док.ПолучитьАтрибут("НомерДок");
Контр=Док.ПолучитьАтрибут("Контрагент");
Док.ВыбратьСтроки();
Если Док.КоличествоСтрок()>0 Тогда
Пока Док.ПолучитьСтроку()=1 Цикл
Тов=Док.ПолучитьАтрибут("Товар");
Км=Док.ПолучитьАтрибут("Количество");
К=Км*(-1);
Таб.ВывестиСекцию("Строка|Строка1");
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.Показать("""");
КонецПроцедуры
таблица должна иметь следующий вид.
| товар | товар | товар | товар | товар
контрагент число число ... ... ...
контрагент ... ... ... ... ...
контрагент ... ... ... ... ...
Если кто знает подскажите, оч. буду благодарен."
вот код отчета:
Процедура Выполнить()
Док=СоздатьОбъект("Документ.РасходнаяНакладная");
Док.ВыбратьДокументы(Дата1,Дата2);
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("""");
Таб.ВывестиСекцию("Шапка");
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.ВозвратГП=1 Тогда
ДатаПер=Док.ПолучитьАтрибут("ДатаДок");
НомерДока=Док.ПолучитьАтрибут("НомерДок");
Контр=Док.ПолучитьАтрибут("Контрагент");
Док.ВыбратьСтроки();
Если Док.КоличествоСтрок()>0 Тогда
Пока Док.ПолучитьСтроку()=1 Цикл
Тов=Док.ПолучитьАтрибут("Товар");
Км=Док.ПолучитьАтрибут("Количество");
К=Км*(-1);
Таб.ВывестиСекцию("Строка|Строка1");
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.Показать("""");
КонецПроцедуры
таблица должна иметь следующий вид.
| товар | товар | товар | товар | товар
контрагент число число ... ... ...
контрагент ... ... ... ... ...
контрагент ... ... ... ... ...
Если кто знает подскажите, оч. буду благодарен."
12.08.2009
16:29
#3
Тудность в том что номенклатуры много, нужно чтобы заполнение таблица было автоматическим, то есть что бы и контрагенты и возвращаемые им товары и их колличество заполнялось автоматически в виде таблицы, а в моем коде выводится простым списком. Возможно нужно использлвать Таблицу Значений или Список значений только я вот не могу сообразить как это сделать(
12.08.2009
16:33
#4
Есть такое дело, как конструктор запросов, в том числе и на 7.7! Попробуйте его!
12.08.2009
20:28
#5
"С помощью макета печатных форм получилось=>
код:
Процедура Сформировать_Колонки(Таб, Стр, Док)
Таб.ВывестиСекцию(Стр+"|Начало");
Док.ВыбратьСтроки();
Если Док.КоличествоСтрок()>0 Тогда
Пока Док.ПолучитьСтроку()=1 Цикл
Тов=Док.ПолучитьАтрибут("Товар");
Км=Док.ПолучитьАтрибут("Количество");
К=Км;
Таб.ПрисоединитьСекцию(Стр+"|Колонка_1");
КонецЦикла;
КонецЕсли;
Таб.ПрисоединитьСекцию(Стр+"|Конец");
КонецПроцедуры
Процедура Сформировать()
Док=СоздатьОбъект("Документ.РасходнаяНакладная");
Док.ВыбратьДокументы("01.05.09","31.05.09");
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Таб.ВывестиСекцию("Заголовок");
Сформировать_Колонки(Таб, "Шапка",Док);
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.ВозвратГП=1 Тогда
Дат=Док.ПолучитьАтрибут("ДатаДок");
Контр=Док.ПолучитьАтрибут("Контрагент");
Таб.ВывестиСекцию("Строка1");
Сформировать_Колонки(Таб, "Строка_1",Док);
КонецЕсли;
КонецЦикла;
Сформировать_Колонки(Таб, "Подвал",Док);
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать","""");
КонецПроцедуры
печатается так:
контрагент1 Номенклатура1 Номенклатура2
Кол-во Кол-во
контрагент2 Номенклатура3 Номенклатура4
Кол-во Кол-во
контрагент3 Номенклатура2
Кол-во
контрагент4 Номенклатура4 Номенклатура5 Номенклатура6
Кол-во Кол-во Кол-во
контрагент5 ...
...
но должно быть так:
Номенклатура1 Номенклатура2 Номенклатура3 Номенклатура4 Номенклатура5 ...
контрагент1 Кол-во Кол-во
контрагент2 Кол-во Кол-во
контрагент3 Кол-во
контрагент4
контрагент5 Кол-во
...
Понимаю конечн, что голову можно сломать, но если кто нибудь разберется большое спасибо.
"
код:
Процедура Сформировать_Колонки(Таб, Стр, Док)
Таб.ВывестиСекцию(Стр+"|Начало");
Док.ВыбратьСтроки();
Если Док.КоличествоСтрок()>0 Тогда
Пока Док.ПолучитьСтроку()=1 Цикл
Тов=Док.ПолучитьАтрибут("Товар");
Км=Док.ПолучитьАтрибут("Количество");
К=Км;
Таб.ПрисоединитьСекцию(Стр+"|Колонка_1");
КонецЦикла;
КонецЕсли;
Таб.ПрисоединитьСекцию(Стр+"|Конец");
КонецПроцедуры
Процедура Сформировать()
Док=СоздатьОбъект("Документ.РасходнаяНакладная");
Док.ВыбратьДокументы("01.05.09","31.05.09");
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Таб.ВывестиСекцию("Заголовок");
Сформировать_Колонки(Таб, "Шапка",Док);
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.ВозвратГП=1 Тогда
Дат=Док.ПолучитьАтрибут("ДатаДок");
Контр=Док.ПолучитьАтрибут("Контрагент");
Таб.ВывестиСекцию("Строка1");
Сформировать_Колонки(Таб, "Строка_1",Док);
КонецЕсли;
КонецЦикла;
Сформировать_Колонки(Таб, "Подвал",Док);
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать","""");
КонецПроцедуры
печатается так:
контрагент1 Номенклатура1 Номенклатура2
Кол-во Кол-во
контрагент2 Номенклатура3 Номенклатура4
Кол-во Кол-во
контрагент3 Номенклатура2
Кол-во
контрагент4 Номенклатура4 Номенклатура5 Номенклатура6
Кол-во Кол-во Кол-во
контрагент5 ...
...
но должно быть так:
Номенклатура1 Номенклатура2 Номенклатура3 Номенклатура4 Номенклатура5 ...
контрагент1 Кол-во Кол-во
контрагент2 Кол-во Кол-во
контрагент3 Кол-во
контрагент4
контрагент5 Кол-во
...
Понимаю конечн, что голову можно сломать, но если кто нибудь разберется большое спасибо.
"
1C8.2 УПП 1.3: Ошибка СУБД: Не удалось привязать составной идентификатор - что делать?Установка локальной 1С 7.7 на Windows 7 64bit Home Edition
Читают тему
(гостей: 2)