Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 сен 2024, 01:54

Поле объекта не обнаружено

Автор Pahan91, 22 окт 2014, 11:57

0 Пользователей и 1 гость просматривают эту тему.

Pahan91

День добрый. ВГДБ, есть обработка выгрузка в ОСЗН, там в табличной части поле Общая площадь помещения. Нужно заменить на жилую площадь.
НоваяСтрокаЛС.sob = ТекЛС.ОбщаяПлощадь;
Меняю на:
НоваяСтрокаЛС.sob = ТекЛС.ЖилаяПлощадь; ==> Поле объекта не обнаружено "жилая площадь"

cska-fanat-kz

Что есть "ВГДБ"? О какой конфигурации идет речь?
Или вопрос только "для тех, кто в теме"?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

MuI_I_Ika

Значит ТекЛС не содержит такого поля. Либо добавьте его туда предварительно, либо выберите другое.

ВДГБ: http://www.vdgb.ru/

Pahan91

ТекЛС есть лицевой счет. Там рядом идут поля Общая площадь и жилая площадь. Может я что-то недопонял

cska-fanat-kz

Это в документе может быть и есть такие реквизиты.
А в этой переменной (типа "структура"?) может быть выбираются только определенные реквизиты...

Без кода целиком, конфигурации под рукой - гадать можно долго долго...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pahan91

Код обработки я могу выложить (могу и кусок проблемный), но боюсь меня лесом пошлют.

cska-fanat-kz

Pahan91, да ладно, не держите в себе ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pahan91

На форме выделено поле, куда должна вывестись жилая площадь.
Добавлено: 22 окт 2014, 14:45


Было ТекСтрока.ОбщаяПлощадь - тянулось.  Делаю ЖилаяПлощадь -- Поле не найдено. В ЛС они рядом идут

cska-fanat-kz

Не хватает кода. Надо смотреть где формируется "СведенияОЛицевыхСчетах"...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pahan91

Перем СписокВидовУслуг1;
Перем СписокВидовУслуг2;
Перем СписокВидовУслуг3;
Перем СписокВидовБлагоустройств1;
Перем СписокВидовБлагоустройств2;
Перем ИмяГод;
Перем ИмяМесяц;

////////////////////////////////////////////////////////////////////////////////
// ПРОЧИЕ ПРОЦЕДУРЫ И ФУНКЦИИ

// Создает новое имя файла выгрузки.
Функция НовоеИмяФайла(Индекс)

ИмяФайла = "";
ИмяФайла = ИмяФайла + Строка(КодОрганизации) + Строка(Формат(Период, "ДФ = MM")) + Строка(Формат(Период, "ДФ = yy")) + Строка(Индекс) + ".DBF"; 

Возврат ИмяФайла;

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

// Проверяет наличие достаточных данных для начало выполнения процесса поиска информации в базе.
Функция ИмеютсяНеобходимыхДанныхДляЗагрузки()

ТекстОшибки = "";

Если НЕ ЗначениеЗаполнено(Период) Тогда
ТекстОшибки = "Не заполнено значение поля ""Период""!";
КонецЕсли;

Если НЕ ЗначениеЗаполнено(Организация) Тогда
ТекстОшибки = ?(Не ПустаяСтрока(ТекстОшибки), ТекстОшибки + Символы.ПС, ТекстОшибки) + "Не заполнено значение поля ""Организация""!";
КонецЕсли;

Если НЕ ЗначениеЗаполнено(ИмяКаталогаВыгрузки) Тогда
ТекстОшибки = ?(Не ПустаяСтрока(ТекстОшибки), ТекстОшибки + Символы.ПС, ТекстОшибки) + "Не указана папка для сохранения поля ""Каталог выгрузки""!";
КонецЕсли;

Если НЕ ЗначениеЗаполнено(КодОрганизации) Тогда
ТекстОшибки = ?(Не ПустаяСтрока(ТекстОшибки), ТекстОшибки + Символы.ПС, ТекстОшибки) + "Не заполнено значение поля ""Код организации""!";
КонецЕсли;

//Для Каждого ТекУслуга Из МосковскаяОбластьУКСозвездие_СоответствиеУслуг Цикл
// ИмеетсяНесоответствиеУслуг = Ложь;
// Если НЕ ЗначениеЗаполнено(ТекУслуга.УслугаВБазе) Тогда
// Если НЕ ИмеетсяНесоответствиеУслуг Тогда
// ТекстОшибки = ?(Не ПустаяСтрока(ТекстОшибки), ТекстОшибки + Символы.ПС, ТекстОшибки) + "Форма настройки выгрузки, вкладка ""Соответствие услуг""!";
// ИмеетсяНесоответствиеУслуг = Истина;
// КонецЕсли;
// ТекстОшибки = ТекстОшибки + Символы.ПС + "В строке №" + ТекУслуга.НомерСтроки + " для услуги в ОСЗН """ + ТекУслуга.УслугаВОСЗН + """ не указана соответствующая услуга в базе!";
// КонецЕсли;
//КонецЦикла;
//
//Для Каждого ТекВБ Из МосковскаяОбластьУКСозвездие_СоответствиеВидовБлагоустройств Цикл
// ИмеетсяНесоответствиеВБ = Ложь;
// Если НЕ ЗначениеЗаполнено(ТекВБ.ВидБлагоустройстваВОСЗН) Тогда
// Если НЕ ИмеетсяНесоответствиеУслуг Тогда
// ТекстОшибки = ?(Не ПустаяСтрока(ТекстОшибки), ТекстОшибки + Символы.ПС, ТекстОшибки) + "Форма настройки выгрузки, вкладка ""Соответствие видов благоустройств""!";
// ИмеетсяНесоответствиеВБ = Истина;
// КонецЕсли;
// ТекстОшибки = ТекстОшибки + Символы.ПС + "В строке №" + ТекВБ.НомерСтроки + " для вида благоустройства в ОСЗН " + ТекВБ.ВидБлагоустройстваВОСЗН + " не указан соответствующий вид благоустройства в базе!";
// КонецЕсли;
//КонецЦикла;

Возврат ТекстОшибки;
КонецФункции // ИмеютсяНеобходимыхДанныхДляЗагрузки()

// Процедура заполняет таблицу начислений
Процедура ЗаполнитьТаблицуНачислений()

МосковскаяОбластьУКСозвездие_ТаблицаВыгрузки.Очистить();

// Проверяем установлен ли флаг на выводе лицевых счетов, в которых проживают льготники.
Если ВыводитьЛьготников Тогда
СведенияОЛицевыхСчетах = ПолучитьТаблицуОткрытыхЛицевыхСчетовЛьготников();
Иначе
СведенияОЛицевыхСчетах = ПолучитьТаблицуОткрытыхЛицевыхСчетов();
КонецЕсли;

ТаблицаЛС = СведенияОЛицевыхСчетах.Скопировать(,"ЛицевойСчет, Помещение, КоличествоЛСВПомещении");

СтруктураВидовУслугДляПоиска = ПодготовитьСтруктуруСТаблицамиВидовУслуг();
ТаблицаВБДляПоиска           = ПодготовитьСтруктуруСТаблицамиВБ();

ДеревоНачисленийДляСписка1 = ПолучитьДеревоНачисленийДляСписка1(ТаблицаЛС, СтруктураВидовУслугДляПоиска.ТаблицаВидовУслугДляСписка1);
ДеревоНачисленийДляСписка2 = ПолучитьДеревоНачисленийДляСписка2(ТаблицаЛС, СтруктураВидовУслугДляПоиска.ТаблицаВидовУслугДляСписка2);
ДеревоНачисленийДляСписка3 = ПолучитьДеревоНачисленийДляСписка3(ТаблицаЛС, СтруктураВидовУслугДляПоиска.ТаблицаВидовУслугДляСписка3);

// Заполняем таблицу с состояниями видов благоустройств в помещениях, в которых открыты лицевые счета.
СведенияОБлагоустройствах = ПолучитьСведенияОБлагоустройствахЛицевыхСчетов(ТаблицаЛС, ТаблицаВБДляПоиска);

СведенияОПериодыПроживанияГраждан = ПолучитьСведенияОПрисутствияхГраждан(ТаблицаЛС);

Если СведенияОЛицевыхСчетах.Количество() > 0 Тогда

ЗаполненоДеревоНачисленийДляСписка1 = ?(ДеревоНачисленийДляСписка1.Строки.Количество() > 0, Истина, Ложь);
ЗаполненоДеревоНачисленийДляСписка2 = ?(ДеревоНачисленийДляСписка2.Строки.Количество() > 0, Истина, Ложь);
ЗаполненоДеревоНачисленийДляСписка3 = ?(ДеревоНачисленийДляСписка3.Строки.Количество() > 0, Истина, Ложь);

ЗаполненыСведенияОБлагоустройствах = ?(СведенияОБлагоустройствах.Количество() > 0, Истина, Ложь);

ЗаполненыСведенияОПроживающих = ?(СведенияОПериодыПроживанияГраждан.Количество() > 0, Истина, Ложь);

ЗаКакойГод   = Формат(Период, "ДФ = yyyy");
ЗаКакойМесяц = Формат(Период, "ДФ = MM");

ДатаАктуальности = КонецМесяца(Период);
ТекЗдание = "";
ПервыйПроход = Истина;
ОтборЛС = Новый Структура;
Для Каждого ТекЛС Из СведенияОЛицевыхСчетах Цикл

ЛицевойСчет = ТекЛС.ЛицевойСчет;

НоваяСтрокаЛС          = МосковскаяОбластьУКСозвездие_ТаблицаВыгрузки.Добавить();
Если НЕ ВыводЛицевыхСчетов Тогда
НоваяСтрокаЛС.NumLs = ТекЛС.ЛицевойСчет;
Иначе
НоваяСтрокаЛС.NumLs = ТекЛС.ЛицевойСчетИдентификатор;
КонецЕсли;

/// Тузова
НоваяСтрокаЛС.Kod_Org  = СокрЛП(КодОрганизации);
НоваяСтрокаЛС.Nazv_Org = СокрЛП(Организация.Наименование);
НоваяСтрокаЛС.God      = ЗаКакойГод;
НоваяСтрокаЛС.Mes      = ЗаКакойМесяц;
НоваяСтрокаЛС.Sob      = ТекЛС.ЖилаяПлощадь;




НоваяСтрокаЛС.TipZF    = ТекЛС.ВидСобственности;
НоваяСтрокаЛС.KolChLs  = ТекЛС.КоличествоЗарегистрированных;
НоваяСтрокаЛС.FIO      = СокрЛП(ТекЛС.ОтветственныйВладелец.Наименование);
НоваяСтрокаЛС.Dolg     = ТекЛС.НачальноеСальдо;
Здание = ТекЛС.Помещение.Владелец;
Если ПервыйПроход Тогда
СтрокаАдреса        = СформироватьАдресДляВывода(ТекЛС);
НоваяСтрокаЛС.Adres = СтрокаАдреса + ?(НЕ ПустаяСтрока(СтрокаАдреса), ", ", "") + СокрЛП(ТекЛС.Помещение.Наименование);
ТекЗдание = Здание;
ПервыйПроход = Ложь;
ИначеЕсли ТекЗдание = Здание Тогда
НоваяСтрокаЛС.Adres = СтрокаАдреса + ?(НЕ ПустаяСтрока(СтрокаАдреса), ", ", "") + СокрЛП(ТекЛС.Помещение.Наименование);
ИначеЕсли НЕ ТекЗдание = ТекЛС.Помещение.Владелец Тогда
СтрокаАдреса        = СформироватьАдресДляВывода(ТекЛС);
НоваяСтрокаЛС.Adres = СтрокаАдреса + ?(НЕ ПустаяСтрока(СтрокаАдреса), ", ", "") + СокрЛП(ТекЛС.Помещение.Наименование);
ТекЗдание = Здание;
КонецЕсли;

ОтборЛС.Вставить("ЛицевойСчет", ЛицевойСчет);
Если ЗаполненоДеревоНачисленийДляСписка1 Тогда
НайденнаяСтрокаПоЛС = ДеревоНачисленийДляСписка1.Строки.Найти(ЛицевойСчет, "ЛицевойСчет");
Если НЕ НайденнаяСтрокаПоЛС = Неопределено Тогда
Для Каждого ТекЛС1 Из НайденнаяСтрокаПоЛС.Строки Цикл
Начислено       = 0;
Перерасчет      = 0;

ПервыйПроход = Истина;

ТарифДляВывода = 0;

Для Каждого ВидУслугиВОСЗН Из ТекЛС1.Строки Цикл
ИмелиМестоПерерасчеты = ВидУслугиВОСЗН.ИмелиМестоПерерасчеты;
ИмелиМестоНачисления  = ВидУслугиВОСЗН.ИмелиМестоНачисления;
ПризнакНачисления  = Ложь;
ПризнакПерерасчета = Ложь;
ТарифУслуги = 0;
ТарифПоУслуге   = 0;
УслугаДляТарифа = "";
Для Каждого ВидУслугиВБазе Из ВидУслугиВОСЗН.Строки Цикл
Для Каждого Услуга Из ВидУслугиВБазе.Строки Цикл
Если ПервыйПроход Тогда
Если Услуга.ВидУслугиВОСЗН = "Оплата жилья в расчете на 1 кв. м. общей площади" Тогда
Суффикс = "TO";
ИначеЕсли Услуга.ВидУслугиВОСЗН = "Оплата жилья в расчете на 1 проживающего человека" Тогда
Суффикс = "TO2";
ИначеЕсли Услуга.ВидУслугиВОСЗН = "Найм / капитальный ремонт" Тогда
Суффикс = "NKR";
ИначеЕсли Услуга.ВидУслугиВОСЗН = "Отопление" Тогда
Суффикс = "Otop";
КонецЕсли;
ПервыйПроход = Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(Услуга.Услуга) Тогда
Если Услуга.ВидНачисления = Перечисления.УПЖКХ_ВидыНачислений.Начисление Тогда
Начислено = Начислено + Услуга.Начислено;

Если НЕ ПризнакНачисления Тогда
ТарифПоУслуге        = Услуга.Тариф;
ПризнакНачисления    = Истина;
КонецЕсли;

ИначеЕсли Услуга.ВидНачисления = Перечисления.УПЖКХ_ВидыНачислений.ПерерасчетНачисления Тогда

Перерасчет = Перерасчет + Услуга.Начислено;

Если НЕ ИмелиМестоНачисления И НЕ ПризнакПерерасчета Тогда
УслугаДляТарифа      = Услуга.Услуга;
ПризнакПерерасчета   = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;

Если ЗначениеЗаполнено(ТарифПоУслуге) Тогда
ТарифУслуги = ТарифПоУслуге;
ИначеЕсли ВидУслугиВБазе.Строки.Количество() > 0 Тогда
Если ЗначениеЗаполнено(УслугаДляТарифа) Тогда
ТарифУслуги = ПолучитьТарифПоЛицевомуСчету(ДатаАктуальности, Организация, УслугаДляТарифа, ЛицевойСчет);
Иначе
НайденнаяСтрока1 = ТекЛС1.Строки.Найти(ВидУслугиВБазе.ВидУслугиВБазе, "ВидУслугиВБазе");

Если НЕ НайденнаяСтрока1 = Неопределено Тогда
Если НайденнаяСтрока1.ИмеетсяНазначеннаяУслуга Тогда
Если НайденнаяСтрока1.ИмелиМестоНачисления ИЛИ НайденнаяСтрока1.ИмелиМестоПерерасчеты Тогда
Усл1 = НайденнаяСтрока1.Строки[0].Услуга;
Если ЗначениеЗаполнено(Усл1) Тогда
ТарифУслуги = ПолучитьТарифПоЛицевомуСчету(ДатаАктуальности, Организация, Усл1, ЛицевойСчет);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ТарифДляВывода = ТарифДляВывода + ТарифУслуги;
КонецЦикла;
НоваяСтрокаЛС["Tar" + Суффикс] = ТарифДляВывода;
НоваяСтрокаЛС["Nac" + Суффикс] = Начислено + Перерасчет;
КонецЦикла;
КонецЕсли;
КонецЕсли;

Если ЗаполненоДеревоНачисленийДляСписка2 Тогда
НайденнаяСтрокаПоЛС = ДеревоНачисленийДляСписка2.Строки.Найти(ЛицевойСчет, "ЛицевойСчет");
Если НЕ НайденнаяСтрокаПоЛС = Неопределено Тогда
Для Каждого ТекЛС1 Из НайденнаяСтрокаПоЛС.Строки Цикл

Начислено     = 0;
Перерасчет    = 0;
ТарифПоУслуге = 0;

УслугаДляТарифа = "";

НаличиеСчетчика = Ложь;

НормативПотребления  = "";
РасширеннаяНастройка = Ложь;

ПервыйПроход = Истина;
ПризнакНачисления  = Ложь;
ПризнакПерерасчета = Ложь;

Для Каждого ВидУслугиВОСЗН Из ТекЛС1.Строки Цикл
ИмелиМестоПерерасчеты = ВидУслугиВОСЗН.ИмелиМестоПерерасчеты;
ИмелиМестоНачисления  = ВидУслугиВОСЗН.ИмелиМестоНачисления;
Для Каждого ВидУслугиВБазе Из ВидУслугиВОСЗН.Строки Цикл
Для Каждого Услуга Из ВидУслугиВБазе.Строки Цикл
Если ПервыйПроход Тогда
Если Услуга.ВидУслугиВОСЗН = "Холодное водоснабжение" Тогда
Суффикс = "HV";
ИначеЕсли Услуга.ВидУслугиВОСЗН = "Горячее водоснабжение" Тогда
Суффикс = "GV";
ИначеЕсли Услуга.ВидУслугиВОСЗН = "Водоотведение" Тогда
Суффикс = "Stoki";
ИначеЕсли Услуга.ВидУслугиВОСЗН = "Газовое снабжение" Тогда
Суффикс = "Gaz";
КонецЕсли;
ПервыйПроход = Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(Услуга.Услуга) Тогда
Если Услуга.ВидНачисления = Перечисления.УПЖКХ_ВидыНачислений.Начисление Тогда
Начислено = Начислено + Услуга.Начислено;

Если НЕ ПризнакНачисления Тогда
ТарифПоУслуге        = Услуга.Тариф;
НормативПотребления  = Услуга.НормаПотребления;
РасширеннаяНастройка = Услуга.РасширеннаяНастройка;
ПризнакНачисления    = Истина;
КонецЕсли;

ИначеЕсли Услуга.ВидНачисления = Перечисления.УПЖКХ_ВидыНачислений.ПерерасчетНачисления Тогда

Перерасчет = Перерасчет + Услуга.Начислено;

Если НЕ ИмелиМестоНачисления И НЕ ПризнакПерерасчета Тогда
УслугаДляТарифа      = Услуга.Услуга;
НормативПотребления  = Услуга.НормаПотребления;
РасширеннаяНастройка = Услуга.РасширеннаяНастройка;
ПризнакПерерасчета   = Истина;
КонецЕсли;

КонецЕсли;

Если Услуга.НаличиеСчетчика Тогда
НаличиеСчетчика = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;

Если ЗначениеЗаполнено(ТарифПоУслуге) И (ЗначениеЗаполнено(Начислено) ИЛИ ЗначениеЗаполнено(Перерасчет)) Тогда
НоваяСтрокаЛС["Tar" + Суффикс] = ТарифПоУслуге;
ИначеЕсли ВидУслугиВБазе.Строки.Количество() > 0 Тогда
Если ЗначениеЗаполнено(УслугаДляТарифа) Тогда
НоваяСтрокаЛС["Tar" + Суффикс] = ПолучитьТарифПоЛицевомуСчету(ДатаАктуальности, Организация, УслугаДляТарифа, ЛицевойСчет);
Иначе
НайденнаяСтрока1 = ТекЛС1.Строки.Найти(Истина, "ИмеетсяНазначеннаяУслуга");

Если НЕ НайденнаяСтрока1 = Неопределено Тогда
Если НайденнаяСтрока1.ИмелиМестоНачисления ИЛИ НайденнаяСтрока1.ИмелиМестоПерерасчеты Тогда
Усл1 = НайденнаяСтрока1.Строки[0].Услуга;
Если ЗначениеЗаполнено(Усл1) Тогда
НоваяСтрокаЛС["Tar" + Суффикс] = ПолучитьТарифПоЛицевомуСчету(ДатаАктуальности, Организация, Усл1, ЛицевойСчет);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;

НоваяСтрокаЛС["Nac" + Суффикс] = Начислено + Перерасчет;

НоваяСтрокаЛС["Sch" + Суффикс] = НаличиеСчетчика;

Если НаличиеСчетчика Тогда
Если ЗначениеЗаполнено(НормативПотребления) Тогда
Если РасширеннаяНастройка Тогда
НоваяСтрокаЛС["Norm" + Суффикс] = НормативПотребления.Размер;
Иначе
НоваяСтрокаЛС["Norm" + Суффикс] = ПолучитьРазмерНормыПотребления(ЛицевойСчет, ДатаАктуальности, НормативПотребления, Организация);
КонецЕсли;
ИначеЕсли ВидУслугиВБазе.Строки.Количество() > 0 Тогда
Если НЕ ИмелиМестоНачисления И НЕ ИмелиМестоПерерасчеты Тогда
НайденнаяСтрока1 = ТекЛС1.Строки.Найти(Истина, "ИмеетсяНазначеннаяУслуга");

Если НЕ НайденнаяСтрока1 = Неопределено Тогда
Усл1 = НайденнаяСтрока1.Строки[0].Услуга;
Если ЗначениеЗаполнено(Усл1) Тогда
НормативПотребления    = ПолучитьНормуПотребления(ЛицевойСчет, Усл1, ДатаАктуальности);
Если НормативПотребления.ВариантНастройки = Перечисления.КВП_ВариантыНастроекРасчетаНормативовПотребления.Расширенный Тогда
НоваяСтрокаЛС["Norm" + Суффикс] = ПолучитьРазмерНормыПотребления(ЛицевойСчет, ДатаАктуальности, НормативПотребления, Организация);
Иначе
НоваяСтрокаЛС["Norm" + Суффикс] = НормативПотребления.Размер;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;

КонецЦикла;
КонецЕсли;
КонецЕсли;

Если ЗаполненоДеревоНачисленийДляСписка3 Тогда
НайденнаяСтрокаПоЛС = ДеревоНачисленийДляСписка3.Строки.Найти(ЛицевойСчет, "ЛицевойСчет");

Если НЕ НайденнаяСтрокаПоЛС = Неопределено Тогда

Для Каждого ТекЛС1 Из НайденнаяСтрокаПоЛС.Строки Цикл

Начислено     = 0;
Перерасчет    = 0;
ТарифПоУслуге = 0;

УслугаДляТарифа = "";

НаличиеСчетчика = Ложь;
КолвоСчВПомещении             = 0;
КоличествоСчетчиковВПомещении = 0;

НормативПотребления  = "";
РасширеннаяНастройка = Ложь;

ПервыйПроход = Истина;
ПризнакНачисления  = Ложь;
ПризнакПерерасчета = Ложь;
НазначеноНа = 0;
Для Каждого ВидУслугиВОСЗН Из ТекЛС1.Строки Цикл
ИмелиМестоПерерасчеты = ВидУслугиВОСЗН.ИмелиМестоПерерасчеты;
ИмелиМестоНачисления  = ВидУслугиВОСЗН.ИмелиМестоНачисления;
Для Каждого ВидУслугиВБазе Из ВидУслугиВОСЗН.Строки Цикл
Для Каждого Услуга Из ВидУслугиВБазе.Строки Цикл
Если ПервыйПроход Тогда
Если Услуга.ВидУслугиВОСЗН = "Электрическая энергия" Тогда
Суффикс = "Ee";
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Услуга.Услуга) Тогда
Если Услуга.ВидНачисления = Перечисления.УПЖКХ_ВидыНачислений.Начисление Тогда

Начислено = Начислено + Услуга.Начислено;

Если НЕ ПризнакНачисления И ЗначениеЗаполнено(Услуга.НормаПотребления) Тогда
ТарифПоУслуге        = Услуга.Тариф;
НормативПотребления  = Услуга.НормаПотребления;
РасширеннаяНастройка = Услуга.РасширеннаяНастройка;
ПризнакНачисления    = Ложь;
КонецЕсли;

ИначеЕсли Услуга.ВидНачисления = Перечисления.УПЖКХ_ВидыНачислений.ПерерасчетНачисления Тогда

Перерасчет = Перерасчет + Услуга.Начислено;

Если НЕ ИмелиМестоНачисления И НЕ ПризнакПерерасчета И ЗначениеЗаполнено(Услуга.НормаПотребления) Тогда
УслугаДляТарифа      = Услуга.Услуга;
НормативПотребления  = Услуга.НормаПотребления;
РасширеннаяНастройка = Услуга.РасширеннаяНастройка;
ПризнакПерерасчета   = Истина;
КонецЕсли;

КонецЕсли;

Если ЗначениеЗаполнено(Услуга.Услуга) Тогда
Если Услуга.Услуга.СпособРасчета = Перечисления.КВП_СпособыРасчета.ПоПоказаниямСчетчика
ИЛИ Услуга.Услуга.СпособРасчета = Перечисления.КВП_СпособыРасчета.ПоПоказаниямСчетчикаИНорме Тогда
Если Услуга.НазначеноНа > НазначеноНа Тогда
НазначеноНа = Услуга.НазначеноНа;
КонецЕсли;

Если Услуга.КоличествоСчетчиковВПомещении > КоличествоСчетчиковВПомещении Тогда
КоличествоСчетчиковВПомещении = Услуга.КоличествоСчетчиковВПомещении;
КонецЕсли;
КонецЕсли;
КонецЕсли;

Если Услуга.КоличествоСчетчиковВЛС > 0 Тогда
НаличиеСчетчика = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;

Если ЗначениеЗаполнено(ТарифПоУслуге) И (ЗначениеЗаполнено(Начислено) ИЛИ ЗначениеЗаполнено(Перерасчет)) Тогда
НоваяСтрокаЛС["Tar" + Суффикс] = ТарифПоУслуге;
ИначеЕсли ВидУслугиВБазе.Строки.Количество() > 0 Тогда
Если ЗначениеЗаполнено(УслугаДляТарифа) Тогда
НоваяСтрокаЛС["Tar" + Суффикс] = ПолучитьТарифПоЛицевомуСчету(ДатаАктуальности, Организация, УслугаДляТарифа, ЛицевойСчет);
Иначе
НайденнаяСтрока1 = ТекЛС1.Строки.Найти(Истина, "ИмеетсяНазначеннаяУслуга");

Если НЕ НайденнаяСтрока1 = Неопределено Тогда
Если НайденнаяСтрока1.ИмелиМестоНачисления ИЛИ НайденнаяСтрока1.ИмелиМестоПерерасчеты Тогда
Усл1 = НайденнаяСтрока1.Строки[0].Услуга;
Если ЗначениеЗаполнено(Усл1) Тогда
НоваяСтрокаЛС["Tar" + Суффикс] = ПолучитьТарифПоЛицевомуСчету(ДатаАктуальности, Организация, Усл1, ЛицевойСчет);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;

НоваяСтрокаЛС["Nac" + Суффикс] = Начислено + Перерасчет;

Если ТекЛС.КоличествоЛСВПомещении = 1 Тогда
Если НаличиеСчетчика Тогда
НоваяСтрокаЛС["KolFml"] = 1;
КонецЕсли;
ИначеЕсли ТекЛС.КоличествоЛСВПомещении > 1 Тогда
Если КоличествоСчетчиковВПомещении > 0 Тогда
НоваяСтрокаЛС["KolFml"] = НазначеноНа;
Иначе
НоваяСтрокаЛС["KolFml"] = 0;
КонецЕсли;
КонецЕсли;

Если ЗначениеЗаполнено(НормативПотребления) Тогда
Если РасширеннаяНастройка Тогда
НоваяСтрокаЛС["Norm" + Суффикс] = НормативПотребления.Размер;
Иначе
НоваяСтрокаЛС["Norm" + Суффикс] = ПолучитьРазмерНормыПотребления(ЛицевойСчет, ДатаАктуальности, НормативПотребления, Организация);
КонецЕсли;
ИначеЕсли ВидУслугиВБазе.Строки.Количество() > 0 Тогда
Если НЕ ИмелиМестоНачисления И НЕ ИмелиМестоПерерасчеты Тогда
НайденнаяСтрока1 = ТекЛС1.Строки.Найти(Истина, "ИмеетсяНазначеннаяУслуга");

Если НЕ НайденнаяСтрока1 = Неопределено Тогда
Усл1 = НайденнаяСтрока1.Строки[0].Услуга;
Если ЗначениеЗаполнено(Усл1) Тогда
НормативПотребления    = ПолучитьНормуПотребления(ЛицевойСчет, Усл1, ДатаАктуальности);
Если НормативПотребления.ВариантНастройки = Перечисления.КВП_ВариантыНастроекРасчетаНормативовПотребления.Расширенный Тогда
НоваяСтрокаЛС["Norm" + Суффикс] = ПолучитьРазмерНормыПотребления(ЛицевойСчет, ДатаАктуальности, НормативПотребления, Организация);
Иначе
НоваяСтрокаЛС["Norm" + Суффикс] = НормативПотребления.Размер;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЕсли;

Если ЗаполненыСведенияОБлагоустройствах Тогда
НайденныеСведенияОБлагоустройствахЛС = СведенияОБлагоустройствах.НайтиСтроки(ОтборЛС);
Для Каждого ТекВБ Из НайденныеСведенияОБлагоустройствахЛС Цикл
Если ЗначениеЗаполнено(ТекВБ.ВидБлагоустройстваВБазе) Тогда
Если ТекВБ.ВидБлагоустройстваВОСЗН = "Плита" Тогда
Суффикс = "KodPlita";
КонецЕсли;
НоваяСтрокаЛС[Суффикс] = ТекВБ.ЗначениеБлагоустройства;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Если ЗаполненыСведенияОПроживающих Тогда
НайденныеСведенияОПроживающихЛС = СведенияОПериодыПроживанияГраждан.НайтиСтроки(ОтборЛС);
Для Каждого ТекСеведенияОЛС Из НайденныеСведенияОПроживающихЛС Цикл
НоваяСтрокаЛС.KNotKU   = ТекСеведенияОЛС.КолвоОтсутствующих;
КонецЦикла;
КонецЕсли;

ОтборЛС.Очистить();
КонецЦикла;
КонецЕсли;

ЭлементыФормы.КП_ТаблицыНачислений.Кнопки.Выгрузить.Доступность = Истина;

КонецПроцедуры // ЗаполнитьТаблицуНачислений()

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск