Элемент таблицы значений - таблица значений

Новая тема
Необходимо загнать в таблицу значения данные документа. Естественно как шапку, так и табличную часть. Подскажите, плз, как лучше это сделать, не нашёл нигде примера.
а собственно ТЗ умеешь создавать и с ней работать? и зачем это понадобилось шапку в ТЗ "загонять"? в табличной части у тебя несколько строк, а шапка - она шапка и есть, там конечное число реквизитов...
С ТЗ работаю без проблем. Но выборка должна делаться по табличной части, шапка лишь для распознавания определённого документа. Хотя может ты и прав. Просто получится дублирование шапки документа в каждой строке таблицы.
так это просто дополнительная колонка "Документ", а потом к любому реквизиту шапки обратишься :]
Мне как раз надо обратится к любому реквизиту табличной части через шапку. А шапку желательно иметь в единственном экземпляре, что бы избежать путаницы и лишней обработки
что то не складывается?
Да не то что бы... Просто пока не знаю, с какого конца приступить. Я ведь затеял это что бы лишних циклов в циклах избежать. Тз позволяет выборку по поиску делать, без перебора всей таблицы. Вот теперь думаю, как это поиск организовать сначала в основной ТЗ, а затем во вложенной.
"Вот что я сделал:



Запрос = СоздатьОбъект("Запрос");

ТЗ= "//{{ЗАПРОС(ТЗ)

|Период С датаНН ПО датаКК;

|ОбрабатыватьДокументы Все;

|Док = Документ.Карточка.ТекущийДокумент;

|ВесБ = Документ.Карточка.ВесБ;

|НаименованиеБлюда = Документ.Карточка.НаименованиеБлюда;

|Продукт = Документ.Карточка.Продукт;

|Порции = Документ.Карточка.Порции;

|НомерСтр = Документ.Карточка.ТекущийДокумент.НомерСтроки;

|Группировка Док упорядочить по Док.ТекущийДокумент;

|Группировка НомерСтр;

|Условие(ПустаяСтрока(НаименованиеБлюда)=0);";

ТЗ = ТЗ+"  

|"//}}ЗАПРОС

;

если Запрос.Выполнить(ТЗ)=0 тогда

Сообщить("Ошибка в запросе!","!");

Возврат;

конецесли;

//-----------------------------------------------------------------

пока Запрос.Группировка(1)=1 Цикл

ШапкаДокумента.НоваяСтрока();

ШапкаДокумента.Документ = Запрос.Док;

ШапкаДокумента.Порции = Запрос.Порции;

ШапкаДокумента.НаименованиеБлюда = СокрЛП(Запрос.НаименованиеБлюда);

ШапкаДокумента.СтрокаДокумента = СоздатьОбъект("ТаблицаЗначений");

ШапкаДокумента.СтрокаДокумента.НоваяКолонка("Продукт", "Строка");

ШапкаДокумента.СтрокаДокумента.НоваяКолонка("КодПродукта", "Документ.Продукт.Код");

ШапкаДокумента.СтрокаДокумента.НоваяКолонка("ВесБ", "Документ.ВесБ");

   пока Запрос.Группировка(2)=1 Цикл

ШапкаДокумента.СтрокаДокумента.НоваяСтрока();

ШапкаДокумента.СтрокаДокумента.КодПродукта = Запрос.Продукт.Код;

ШапкаДокумента.СтрокаДокумента.Продукт = СокрЛП(Запрос.Продукт);

ШапкаДокумента.СтрокаДокумента.ВесБ = Запрос.ВесБ;

конеццикла;

конеццикла;

//-----------------------------------------------------------------

Запрос1 = СоздатьОбъект("Запрос");

ТЗ1= "//{{ЗАПРОС(ТЗ)

|Элем = Справочник.Продукты.ТекущийЭлемент;

|Наименование = Справочник.Продукты.Наименование;

|БазаЕдИзм = Справочник.Продукты.БазаЕдИзм;

|Группировка Элем;

|условие (Элем.ЭтоГруппа()=0);";

ТЗ = ТЗ1+"  

|"//}}ЗАПРОС

;

если Запрос1.Выполнить(ТЗ1)=0 тогда

Сообщить("Ошибка в запросе!","!");

Возврат;

конецесли;  

//---------------------------------------------------------------------

Далее идёт выборка:



пока Запрос1.Группировка(1)=1 Цикл

если ШапкаДокумента.НайтиЗначение(СокрЛП(ПриемПищи[сч]),Стрк,Клнк) = 1 тогда

сообщить("Стрк "+Стрк);

сообщить("Клнк "+Клнк);

ШапкаДокумента.ПолучитьСтрокуПоНомеру(Стрк);

ШапкаДокумента.СтрокаДокумента.НайтиЗначение(СокрЛПЗапрос1.Наименование),СтркСтрока,КлнкСтрока);

сообщить("СтркСтрока "+СтркСтрока);

сообщить("КлнкСтрока "+КлнкСтрока);

СтркСтрока = """";

КлнкСтрока = """";

конецесли;

конеццикла;



Всё конечно сокращённо, но по сути, по-моему, ясно.

Так вот, выборка Стрк и Клнк происходит, а вот СтркСтрока и КлнкСтрока нет :(

Подскажите, плз, что я не так делаю."
Всем спасибо за помощь, всё получилось :)
Читают тему
(гостей: 1)

Быстрый переход