powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Строка разделитель в макете через каждые три области. Как добавить?
8 сообщений из 8, страница 1 из 1
Строка разделитель в макете через каждые три области. Как добавить?
    #39576639
LittleLoya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!

Подскажите, пожалуйста, что не так делаю? Мне нужно выводить в макет наклейки: три штуки по горизонтали и шесть по вертикали, вот так вроде всё работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Для Х = 1 По Остаток Цикл   
                                    
            ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
            ОбластьДетальныхЗаписей.Параметры.Импортёр = Импортёр;
            ОбластьДетальныхЗаписей.Параметры.НазваниеПроизводителя = НазваниеПроизводителя;
            ОбластьДетальныхЗаписей.Параметры.АдресПроизводителя = АдресПроизводителя;
            Если Счётчик = 3 Тогда
                ОбластьОтступа = Макет.ПолучитьОбласть("Шапка|ОбластьОтступ");
                ТабДок.Вывести(ОбластьОтступа);
                ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
                Счётчик = 0;
            Иначе           
                ТабДок.Присоединить(ОбластьДетальныхЗаписей);                   
            КонецЕсли;
            Счётчик = Счётчик + 1;              
КонецЦикла;



Но мне нужно через каждые три наклейки по вертикали ещё один отступ добавлять, и когда добавляю вот это:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Для Х = 1 По Остаток Цикл   
                                    
            ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
            ОбластьДетальныхЗаписей.Параметры.Импортёр = Импортёр;
            ОбластьДетальныхЗаписей.Параметры.НазваниеПроизводителя = НазваниеПроизводителя;
            ОбластьДетальныхЗаписей.Параметры.АдресПроизводителя = АдресПроизводителя;
            Если Счётчик = 3 Тогда
                ОбластьОтступа = Макет.ПолучитьОбласть("Шапка|ОбластьОтступ");
                ТабДок.Вывести(ОбластьОтступа);
                ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
                Счётчик = 0;
                // вот тут
                СчётчикСтрок = СчётчикСтрок + 1;        
                Если СчётчикСтрок = 3 Тогда
                    ОбластьРазделителя = Макет.ПолучитьОбласть("ОбластьРазделитель");
                    ТабДок.Вывести(ОбластьРазделителя);
                    СчётчикСтрок = 0;               
                КонецЕсли;
                //          
            Иначе           
                ТабДок.Присоединить(ОбластьДетальныхЗаписей);                   
            КонецЕсли;
            Счётчик = Счётчик + 1;              
КонецЦикла;


то почему то выводит сначала три строки, как положено с тремя наклейками в каждой, потом одну наклейку, потом дополнительный разделитель (без основного), затем две наклейки, потом опять по три. Понимаю, что где-то в циклах напутала видимо, но не могу понять где. Подскажите, пожалуйста, что неправильно делаю?
...
Рейтинг: 0 / 0
Строка разделитель в макете через каждые три области. Как добавить?
    #39576726
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LittleLoya,

Определение областей за цикл убрать, потом счетчики тоже можно убрать - проверять на целочисленное деление на 3 можно например. а каждый 9 на 9 деление.. Похоже в счетиках ты запутался
...
Рейтинг: 0 / 0
Строка разделитель в макете через каждые три области. Как добавить?
    #39576848
LittleLoya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zerro, спасибо, определение областей за цикл вынесла, счётчики убрала (оставила один, потому что на Х как на счётчик ориентироваться нельзя), получилось так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
		Для Х = 1 По Остаток Цикл	
									
			ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
			ОбластьДетальныхЗаписей.Параметры.Импортёр = Импортёр;
			ОбластьДетальныхЗаписей.Параметры.НазваниеПроизводителя = НазваниеПроизводителя;
			ОбластьДетальныхЗаписей.Параметры.АдресПроизводителя = АдресПроизводителя;
			Если Й % 3 = 0 Тогда
				ТабДок.Вывести(ОбластьОтступа);
				ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
				Если Й % 9 = 0 Тогда
					ТабДок.Вывести(ОбластьРазделителя);
				КонецЕсли;
			Иначе			
				ТабДок.Присоединить(ОбластьДетальныхЗаписей);					
			КонецЕсли;
			Й = Й + 1;
		КонецЦикла;	


Всё равно криво выводит, сначала одну наклейку, потом область разделителя, потом пустое место под наклейку и две наклейки после пустоты. И вроде в отладчике смотрю, всё верно должно работать, пока остаток от деления Й не равен трём или девяти, то наклейка присоединяется, как только остаток равен трём, строка с наклейками выводится, как только равен девяти, то должен выводиться ещё и разделитель. Но выводится какая-то ересь. Что я не так делаю?! Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Строка разделитель в макете через каждые три области. Как добавить?
    #39576922
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скинь картинку шаблона.
...
Рейтинг: 0 / 0
Строка разделитель в макете через каждые три области. Как добавить?
    #39576950
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверить нет базы. Но я бы первую выводил новую строку ( с одной наклейкой). вторую и третью присоединял бы... потом выводил бы перерыв и каждые девять перерыв строками новыми и все
...
Рейтинг: 0 / 0
Строка разделитель в макете через каждые три области. Как добавить?
    #39577037
LittleLoya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zerro, картинку шаблона - это имеется ввиду, какой макет на выходе получается?

С предыдущим разобралась, там Й % 3 давало 0, при Й=0, ещё помоему у меня появилась путаница в областях, переписала так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
		Для Х = 1 По Остаток Цикл	
									
			ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
			ОбластьДетальныхЗаписей.Параметры.Импортёр = Импортёр;
			ОбластьДетальныхЗаписей.Параметры.НазваниеПроизводителя = НазваниеПроизводителя;
			ОбластьДетальныхЗаписей.Параметры.АдресПроизводителя = АдресПроизводителя;
			ТабДок.Присоединить(ОбластьДетальныхЗаписей);
			Й = Й + 1;
			
			Если Й % 3 = 0 Тогда
				ТабДок.Вывести(ОбластьОтступа);
				ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());				
			КонецЕсли;
			
			Если Й % 9 = 0 Тогда
				ТабДок.Вывести(ОбластьРазделителя);				
			КонецЕсли;
					
		КонецЦикла;	
	КонецЦикла;


Всё равно не пашет. Не пойму в чём дело. :(
...
Рейтинг: 0 / 0
Строка разделитель в макете через каждые три области. Как добавить?
    #39577064
LittleLoya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZerroПроверить нет базы. Но я бы первую выводил новую строку ( с одной наклейкой). вторую и третью присоединял бы... потом выводил бы перерыв и каждые девять перерыв строками новыми и все
Фсё, сделала так, как Вы писали. Всё получилось, хоть и не сразу, спасибо Вам большое!!!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
	Й = 0;
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		Если ВыборкаДетальныеЗаписи.ЕАЦ Тогда
			ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Шапка|Детали");			
		Иначе
			ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Шапка|ДеталиБезКартинки");			
		КонецЕсли;
		
		Остаток = ВыборкаДетальныеЗаписи.КоличествоОстаток;	
		Для Х = 1 По Остаток Цикл	
			
			ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
			ОбластьДетальныхЗаписей.Параметры.Импортёр = Импортёр;
			ОбластьДетальныхЗаписей.Параметры.НазваниеПроизводителя = НазваниеПроизводителя;
			ОбластьДетальныхЗаписей.Параметры.АдресПроизводителя = АдресПроизводителя;
			
			Если Й % 3 = 0 Тогда
				ТабДок.Вывести(ОбластьОтступа);
				ТабДок.Вывести(ОбластьДетальныхЗаписей);
			Иначе	
				ТабДок.Присоединить(ОбластьДетальныхЗаписей);
			КонецЕсли;			
			Й = Й + 1;			
			Если Й > 0 И Й % 9 = 0 Тогда
				ТабДок.Вывести(ОбластьРазделителя);				
			КонецЕсли;
		КонецЦикла;	
	КонецЦикла;
...
Рейтинг: 0 / 0
Строка разделитель в макете через каждые три области. Как добавить?
    #39577113
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и хорошо. так читабельнее
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Строка разделитель в макете через каждые три области. Как добавить?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]