1С БСП: ИнициализироватьМакетОфисногоДокумента с колонтитулами

Задача: вывести в документе сформированном на основе шаблона docx, на сервере колонтитулы только на первой странице.

Решение: гугл не помог, помог отладчик.

...
ДобавитьОписаниеОбласти(ОписаниеОбластей, "НижнийТитульныйКолонтитул", "НижнийТитульныйКолонтитул");
...
ПечатнаяФорма = УправлениеПечатью.ИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета, Макет);
...
				Область = УправлениеПечатью.ОбластьМакета(Макет, Области[ИмяМакета]["НижнийТитульныйКолонтитул"]);
				УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ПараметрыОбласти, Ложь);
...

1С СКД: маленькие хитрости

  1. Группировка колонок в шапке отчета. Например, если необходимо получить шапку вида:

То в СКД во вкладке Ресурсы, нужно добавить поля для вывода в колонки:

Затем в настройках отчета эти поля добавить к колонке «Период»

2. Объединение однотипных колонок единой шапкой, вида:

Для этого в наборе данных, в путь необходимо добавить общий разделитель. Например было: КоличествоОбращений, стало Количество.Обращений. Заголовок необходимо переименовать

3. Добавление в СКД кнопки выбора периода

Для этого во вкладке параметры необходимо добавить реквизит «Период» с типом «Стандартный период», а выражения дат начала и конца стандартные выражения «&Период.ДатаОкончания» и «&Период.ДатаНачала». Так-же необходимо ставить галочки «Ограничение», что бы на форму не выводились лишние поля.

1C: кнопка с выпадающим меню

Казалось бы простая вещь, однако как это сделать совершенно не очевидно и рыскал довольно долго 😉

Добавляем на форму группу «Подменю»:

Накидываем туда команд, и получаем приятного вида кнопку:

1C : нахождение самого верхнего родителя иерархического справочника

Функция ПолучитьРодителя(СправочникСсылка)
		
	Пока НЕ СправочникСсылка.Родитель.Пустая() Цикл
		СправочникСсылка = СправочникСсылка.Родитель;	
	КонецЦикла;
	
	Возврат СправочникСсылка;

КонецФункции

1C 7.7 краткая шпаргалка

Давненько не трогал 7.7 вообще. Да так, что когда пришлось, понял что забыл практически всё. Итак краткая шпаргалка для тех кто вынужден был сделать временный «даунгрейд» 😉

  1. Поиск процедур/функций в коде конфигурации осуществляется через меню «Конфигурация->Поиск во всех текстах»
  2. Запросы можно писать через конструктор «Конструкторы->Запрос», при этом он разместится в позиции курсора, а далее его можно редактировать будет при запуске конструктора по имени
  3. Обход запроса осуществляется по уровням группировки
	Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса = 
	"//{{ЗАПРОС(Сформировать)
	|Обрабатывать НеПомеченныеНаУдаление;
	|ПокДн = Справочник.ПоказанияСчетчиков.ПокДн;
	|Владелец = Справочник.ПоказанияСчетчиков.Владелец;
	|ТекущийЭлемент = Справочник.ПоказанияСчетчиков.ТекущийЭлемент;
	|Код = Справочник.ПоказанияСчетчиков.Код;
	|Группировка ТекущийЭлемент Упорядочить по ТекущийЭлемент.Код;	
	|Условие(Владелец = счтк);
	|"//}}ЗАПРОС
	;
	// Если ошибка в запросе, то выход из процедуры
	Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
		возврат 0;
	КонецЕсли;	
	Пока Запрос.Группировка(1,сортировка) = 1 Цикл        
		Дата_Показания="";	
		если сортировка=-1 тогда
			Дата_Показания=НормализоватьДату(Запрос.Код);
		конецесли;
	    возврат Запрос.ПокДн;
	КонецЦикла;
	
	возврат 0;

4. Отличия в «макете» в 7.7 от 8.х: Вместо «Макет» — «Таблица», вместо «Имя» — «Секция»

5. Данные в «Тело» можно заносить например так:

	Таб = СоздатьОбъект("Таблица");
	Таб.ИсходнаяТаблица("Расчеты");
	Таб.ВывестиСекцию("Шапка");


	МассивСальдо.ВыбратьСтроки();
	Пока МассивСальдо.ПолучитьСтроку() = 1 Цикл
	   // Сообщить(Шаблон("[тз.НомерСтроки]. [тз.Товар] х [тз.Количество] ед."));
	   лс=МассивСальдо.ЛС;	   
	   начало=МассивСальдо.СальдоНачало;
	   
	   начхол=МассивСальдо.ХолоднаяВода;
	   начот=МассивСальдо.Отопление;
	   начкан=МассивСальдо.Канализация;
	   
	   сто=начхол+начот+начкан; 
	   если сто=0 тогда сто=1;конецесли;
	   начхол_пр=100*начхол/сто;
	   начот_пр=100*начот/сто;
	   начкан_пр=100*начкан/сто;
	   
	   оплачено=МассивСальдо.Оплачено;
	   конец=МассивСальдо.СальдоНачало+МассивСальдо.ХолоднаяВода+МассивСальдо.Отопление+МассивСальдо.Канализация-МассивСальдо.Оплачено;
	   
	   распхол=окр(начхол_пр*конец/100,2);
	   распротоп=окр(начот_пр*конец/100,2);
	   раскан=окр(начкан_пр*конец/100,2);
	   Таб.ВывестиСекцию("Тушка");																			
	КонецЦикла;

	
	Таб.Опции(0,0,0,0);
	Таб.ТолькоПросмотр(1);
	Таб.Показать("Результат",);

6. Если реквизит периодический, то данные из него можно получить:

норматив=ЖилоеЗдание.ВидТарифаХВиКан.НормативГВ.Получить(РабочаяДата());

7. Упоротый тип boolean: Да=Истина,Нет=Ложь

1 15 16 17 18 19 51