Функция ПолучитьРодителя(СправочникСсылка)
Пока НЕ СправочникСсылка.Родитель.Пустая() Цикл
СправочникСсылка = СправочникСсылка.Родитель;
КонецЦикла;
Возврат СправочникСсылка;
КонецФункции
Давненько не трогал 7.7 вообще. Да так, что когда пришлось, понял что забыл практически всё. Итак краткая шпаргалка для тех кто вынужден был сделать временный «даунгрейд» 😉
Поиск процедур/функций в коде конфигурации осуществляется через меню «Конфигурация->Поиск во всех текстах»
Запросы можно писать через конструктор «Конструкторы->Запрос», при этом он разместится в позиции курсора, а далее его можно редактировать будет при запуске конструктора по имени
Обход запроса осуществляется по уровням группировки
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Обрабатывать НеПомеченныеНаУдаление;
|ПокДн = Справочник.ПоказанияСчетчиков.ПокДн;
|Владелец = Справочник.ПоказанияСчетчиков.Владелец;
|ТекущийЭлемент = Справочник.ПоказанияСчетчиков.ТекущийЭлемент;
|Код = Справочник.ПоказанияСчетчиков.Код;
|Группировка ТекущийЭлемент Упорядочить по ТекущийЭлемент.Код;
|Условие(Владелец = счтк);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 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. Если реквизит периодический, то данные из него можно получить:
Зачастую бывает так, что в поля, в которых не была предусмотрена валидация данных, вносят данные как бог на душу положит. И в результате получается не пойми что. Данная функция пытается нормализовать номера телефонов.
Функция ПроверитьКорректностьТелефона(телефона) экспорт
телефон=телефона;
answer=Новый Структура("error,result,errortxt,code",false,"","",0);
телефон=СтрЗаменить(телефон," ","");
телефон=СтрЗаменить(телефон,"(","");
телефон=СтрЗаменить(телефон,")","");
телефон=СтрЗаменить(телефон,"-","");
телефон=СтрЗаменить(телефон,"+","");
если СтрДлина(телефон)=10 тогда телефон="7"+телефон;конецесли;
если СтрДлина(телефон)=11 тогда
если Лев(телефон, 1)="8" тогда
телефон=Сред(телефон,2);
телефон="7"+телефон;
конецесли;
конецесли;
если СтрДлина(телефон)<>11 тогда
answer.error=true;
answer.errortxt="Не верный номер телефона";
answer.code=501;
конецесли;
answer.result=телефон;
возврат answer;
конецфункции
На выходе: answer.error true/false. Если false, то в answer.result — нормализованый номер телефона
Такая ошибка чаще всего означает что вы пытаетесь изменить запись регистра, изменяя измерение. А так нельзя. Если нужно изменить измерение — запись нужно предварительно удалить, а затем записать вновь