• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

ПрисоединитьСекцию

  • Автор темы mechanix85
  • Дата начала
M

mechanix85

Добрый день!!!

есть код выгрузке оборотов, типа шахматки, только своим путем

Процедура Сформировать()
ТАБ=СоздатьОбъект("Таблица");
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ВыполнитьЗапрос(НачДата,КонДата,,,, 3,, "С");
ТАБ.ВывестиСекцию("Секция_1|Секция_а");
Ит.ВыбратьКорСчета();
Пока Ит.ПолучитьКорСчет() = 1 Цикл
КТ=ИТ.КорСчет;
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б");
Ит.ВыбратьСчета();
// ТАБ.ВывестиСекцию("Секция_а|Секция_2");
Пока Ит.ПолучитьСчет() = 1 Цикл

ДТ=ИТ.Счет;
СУМ=ИТ.ДО();

КонецЦикла;
КонецЦикла;
ТАБ.Показать();
ТАБ.ТолькоПросмотр(1);
КонецПроцедуры



подскажите как сделать таблицу в виде шахматки.

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




сама таблица

секция_1 ДТ <КТ>
секция_2 <ДТ> <СУМ>


Вообще то цель понять как выводить данные на пересечении верт и гор, а не сам отчет

Спасибо
 
Д

Дайнеко

Вообще то цель понять какую таблицу хотите вывести. Пример нарисуйте, что-ли. И второе, трудность в чем: как работать с запросом или как работать с таблицей?
 
M

mechanix85

Вообще то цель понять какую таблицу хотите вывести. Пример нарисуйте, что-ли. И второе, трудность в чем: как работать с запросом или как работать с таблицей?


таблица типа шахматки

КД
ДТ Сумма


и так далее как в длину так и в ширину

проблема в том как написать это в запросе.

спасибо
 
V

vbs

А посмотреть, как устроена родная шахматка и сделать по образу и подобию не пробовал ?
 
M

mechanix85

пробовал иначе бы темы не создал, но не полностью понимаю язык 1С, поэтому прошу объяснить
 
Д

Дайнеко

таблица типа шахматки

КД
ДТ Сумма
Сударь, благодарю вас подробное и обстоятельное разъяснение. Надеюсь, оно не отняло у Вас много времени.

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

И второе. Если нужный отчет - шахматка, то что мешает в нем разобраться. А если только типа шахматки, то в чем отличие?
 
M

mechanix85

таблица

c80b0130a7b3.jpg


секцию_1 вывожу, а как дальше с секцией_2 работать не могу понять
 
T

tanat

После
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б");
//тут ваш код, по получению выводимых значений.
//выводите секцию:
Таб.ВывестиСекцию("Секция_2|Секция_а");
// присоединяете:
ТАБ.ПрисоединитьСекцию("Секция_2|Секция_б");

Попробуйте.

Это как конструктор "lego": присоединить - цепляет слева еще одну секцию, Вывести - следующй уровень ( правда с направлением "вниз").
 
M

mechanix85

выводит таблицу вот такую


f0ae8a08f736.jpg


где первая колонка ДТ
вторая общий оборот по ДТ счета
и третья КТ

ЗЫ: почему слово д е б е т на форуме считается цензурой?
 
M

mechanix85

Это как конструктор "lego": присоединить - цепляет слева еще одну секцию, Вывести - следующй уровень ( правда с направлением "вниз").

это я уже понял, но почему например первое присоединия секции 2, какбудто отменяется выводом секции2
 
T

tanat

Указывайте на будущее платформу. В 7.7 я не особенно "рублю".

Думается мне, тут особенность в том, что алгоритм вывода данных хромает. Попробуйте нарисовать блок-схему, поможет понять, где что не так.

З.Ы в слове: де_бет откиньте первую букву и громко крикните вслух то, что получится). Сразу поймете. Кстати: дебИт а не деб_Ет.


это я уже понял, но почему например первое присоединия секции 2, какбудто отменяется выводом секции2
Потому что ПрисоединитьСекцию -добавляет к последней выведенной секции.
 
M

mechanix85

а не думаю что смогу вам чтото нарисовать))

ладно буду искать ответ на других форумах
 
Д

Дайнеко

Алгоритм должен состоять из 3-разделов:
1. Вывод только шапки:
Код:
Таб.ВывестиСекцию("Секция_1|Секция_а");
Цикл по корсчетам
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а"); 
КТ=ИТ.КорСчет;
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б"); 
КонеЦикла
Сами данные не извлекаем, только номера корсчетов

2. Вывод серцевины. 2 вложенных цикла
Цикл по основным счетам
ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а"); 
Цикл по корсчетам
ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а"); 
КТ=ИТ.КорСчет;
Сум=?
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б"); 
КонеЦикла
КонеЦикла

3. Вывод последней строки
Полная аналогия строки первой строки. Цикл только по корсчетам

Наверно, ты упускаешь из виду, что первую строку нужно заполнить до конца, до правого края.
Начав выводить вторую, к первой уже ничего не допишешь.
 
M

mechanix85

я написал чтото страшное, выдает еще страшнее. где я напортачил?

Код:
Процедура Сформировать() 
ТАБ=СоздатьОбъект("Таблица"); 
Ит = СоздатьОбъект("БухгалтерскиеИтоги"); 
Ит.ВыполнитьЗапрос(НачДата,КонДата,,,, 3,, "С"); 
ТАБ.ВывестиСекцию("Секция_1|Секция_а"); 
Ит.ВыбратьКорСчета(); 
Пока Ит.ПолучитьКорСчет() = 1 Цикл 
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а"); 
КТ=ИТ.КорСчет; 
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б"); 
КонецЦикла; 
Ит.ВыбратьСчета(); 
Пока Ит.ПолучитьСчет() = 1 Цикл 
//	ДТ=ИТ.Счет;
ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а"); 
Ит.ВыбратьКорСчета(); 
Пока Ит.ПолучитьКорСчет() = 1 Цикл 
ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а"); 
КТ=ИТ.КорСчет; 
СУМ=ИТ.ДО(); 
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б"); 
КонецЦикла;
КонецЦикла;
Ит.ВыбратьКорСчета(); 
Пока Ит.ПолучитьКорСчет() = 1 Цикл 
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а"); 
Ит.ВыбратьСчета(); 
Пока Ит.ПолучитьСчет() = 1 Цикл 
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а"); 
ДТ=ИТ.Счет;
СУМ=ИТ.ДО();
КонецЦикла;
КонецЦикла;	
ТАБ.Показать(); 
ТАБ.ТолькоПросмотр(1); 
КонецПроцедуры
 
Д

Дайнеко

Код:
Процедура Сформировать() 
ТАБ=СоздатьОбъект("Таблица"); 
Ит = СоздатьОбъект("БухгалтерскиеИтоги"); 
Ит.ВыполнитьЗапрос(НачДата,КонДата,,,, 3,, "С"); 

// Шапка
ТАБ.ВывестиСекцию("Секция_1|Секция_а"); 
Ит.ВыбратьКорСчета(); 
Пока Ит.ПолучитьКорСчет() = 1 Цикл 
// Лишняя	ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а"); 
КТ=ИТ.КорСчет; 
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б"); 
КонецЦикла; 

// Основняк
Ит.ВыбратьСчета(); 
Пока Ит.ПолучитьСчет() = 1 Цикл 
ДТ=ИТ.Счет;
ТАБ.ВЫВЕСТИСекцию("Секция_2|Секция_а"); 
//	ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а"); 
Ит.ВыбратьКорСчета(); 
Пока Ит.ПолучитьКорСчет() = 1 Цикл 
// Лишняя			ТАБ.ПрисоединитьСекцию("Секция_2|Секция_а"); 
КТ=ИТ.КорСчет; 
СУМ=ИТ.ДО(); 
ТАБ.ПрисоединитьСекцию("Секция_1|Секция_б"); 
КонецЦикла;
КонецЦикла;

// Подвала у вас нет. все, что ниже убрать
// Ит.ВыбратьКорСчета(); 
//	 Пока Ит.ПолучитьКорСчет() = 1 Цикл 
//		 ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а"); 
//		 Ит.ВыбратьСчета(); 
//		 Пока Ит.ПолучитьСчет() = 1 Цикл 
//					 ТАБ.ПрисоединитьСекцию("Секция_1|Секция_а"); 
//					 ДТ=ИТ.Счет;
//					 СУМ=ИТ.ДО();
//				 КонецЦикла;
//			КонецЦикла;	

ТАБ.Показать(); 
ТАБ.ТолькоПросмотр(1); 
КонецПроцедуры
 
M

mechanix85

знакомая ерунда получилась, когда то такое уже выводил)))


 
V

vbs

Я предпочитаю отчеты, подобные шахматке, делать через ТЗ.
А сформированную ТЗ затем линейно печатать.
Тем самым можно к тому же избежать некрасивостей (вывод пустых ячеек без рамок).
 
M

mechanix85

Я предпочитаю отчеты, подобные шахматке, делать через ТЗ.
А сформированную ТЗ затем линейно печатать.
Тем самым можно к тому же избежать некрасивостей (вывод пустых ячеек без рамок).


я сам все линейно вывожу, но хочется всеже разобраться, так вот например вместо кредита вывести период, и получить обороты например за год в разрезе кварталов
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!