8.х Вопрос по 1С бухгалтерия(Учет в управляющих компаниях ЖКХ)

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем ифкпфт009, 10 авг 2016.

  1. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    ОБ ИНФОРМАЦИОННОМ ВЗАИМОДЕЙСТВИИ ПРИ ПРЕДОСТАВЛЕНИИ МЕР СОЦИАЛЬНОЙ ПОДДЕРЖКИ ПО ОПЛАТЕ ЖИЛОГО ПОМЕЩЕНИЯ И КОММУНАЛЬНЫХ УСЛУГ ОТДЕЛЬНЫМ КАТЕГОРИЯМ ГРАЖДАН И СУБСИДИЙ НА ОПЛАТУ ЖИЛОГО ПОМЕЩЕНИЯ И КОММУНАЛЬНЫХ УСЛУГ

    3.1. «Центр»:

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

    Сведения, представляемые «Центром» в электронном виде (электронные документы), заверяются электронной цифровой подписью, при отсутствии электронной цифровой подписи - подтверждаются на бумажном носителе, заверенном директором и печатью «Центра».

    3.2. «Организация»:

    Ежемесячно до 15-го числа каждого месяца направляет в адрес «Центра» информацию о начисленных суммах за жилое помещение и коммунальные услуги (с перерасчетом); тарифах за физическую единицу и количестве физических единиц по нормативу потребления; сумме задолженности по услугам с лицевого счета и другие сведения согласно структуре файла, приведенной в Приложении № 5 к настоящему Договору.

    Информация представляется в электронном виде файлом в формате DBF.

    Подскажите с чего начать? как я понял - с жэка приходит файл dbf, мы его загружаем в 1С и осуществляем расчет квартплаты граждан "льготников" и отправляем им в dbf формате.
    С чего мне начать? это просто обработку загрузки и выгрузки сделать нужно?

    Вложения:

    • прим.xlsx
      Размер файла:
      10,3 КБ
      Просмотров:
      0
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Да откуда ж мы знаем....Судя по тексту - да, именно так. Каким образом вы это будете делать: в первом приближении написать внешнюю обработку.
  3. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    А вот смотрите, к нам пришел файл с данными о льготниках (фио, снилс и т.д), пользователь производит все начисления, мы выгружаем (сумму и т.д)
    У меня выходит так что выгружает вообще всех, а нужно чтобы он смотрел по файлу, если есть такой, то выгружаем такие-то значения в такие-то поля, или можно вой запрос доработать - типа если NULL в поле код льготника тогда очистить строку- или это не правильно?
    Что посоветуете?
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Производить поиск(запросом или поиском по ТЗ) по загруженной информации из файла.
  5. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    А еще вопрос, у меня выходит, что заполняется таблица значений и выводится в табличный документ, в табличном документе можно расчет делать?
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Нет, это ж не EXCEL или другой табличный процессор.
  7. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Тек, сделал следующее:
    Выгружаем дбфку в ТЗ, производим поиск по ФИО(если нет то выводим сообщение пользователю, что нужно его создать)/
    Далее заполняем колонки, ну допустим площади(FULLAREA)
    У меня выходит как: он находит первое попавшееся значение(допустим 70) и проставляет ее всем.
    Вывод-Запрос кривой.
    Вот код-

    Код:
    &НаСервере
    Процедура ЗагрузитьНаСервере()
       
       
        ИксБейс = Новый XBase;
        ИксБейс.ОткрытьФайл(ПолеВыбораФайла, "");
        ИксБейс.Кодировка = КодировкаXBase.OEM;
       
        Если ИксБейс.Открыта()=0 Тогда //проверяем, удалось ли открыть файл
            Сообщить("Не удалось открыть файл!");
            Возврат;
        Иначе
            Сообщить("Файл открыт:" +  ПолеВыбораФайла );   
        КонецЕсли;
       
       
        //Выполнение чтения файла xbase
       
        //Найти дубликаты в именах колонок таблицы
       
        ВсегоПолейВДБФ = ИксБейс.поля.Количество();
        Сообщить("Всего: " + ВсегоПолейВДБФ + " полей");
       
        МассивИменаПолей = Новый Массив(ВсегоПолейВДБФ);   
       
        МассивСтарыхИменПолей = Новый Массив(ВсегоПолейВДБФ);
        //Загоним все имена полей в массив
        Для н = 0 По ВсегоПолейВДБФ -1 Цикл
            Х = ИксБейс.поля.Получить(н);
            ИмяПоля = Х.NAME;
            МассивИменаПолей[н] = ИмяПоля;
            МассивСтарыхИменПолей[н] = ИмяПоля;
        КонецЦикла;
       
        //Найдем дубликаты среди имен полей
        Для н = 0 По ВсегоПолейВДБФ -1 Цикл
            ТекущееИмя = МассивИменаПолей[н];
            Для к = 0 По ВсегоПолейВДБФ -1 Цикл
                Если н = к  Тогда
                   
                Иначе
                    Если ТекущееИмя = МассивИменаПолей[к] Тогда
                        Позиция = СтрДлина(МассивИменаПолей[к]);
                        МассивИменаПолей[к] = Лев(МассивИменаПолей[к],Позиция-1) + "2";
                        //Сообщить("Замена)" + МассивИменаПолей[к])
                    КонецЕсли
                КонецЕсли
            КонецЦикла;
        КонецЦикла;
       
        Сообщить("Всего записей: " + ИксБейс.КоличествоЗаписей());
       
        //Добавить тип строка для Таблицы значений ТЗХ
        МассивТипаВыбора = Новый Массив;
        МассивТипаВыбора.Добавить(Тип("Строка"));
        ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора);   
       
        //отобразить имеющиеся поля
        Для Индекс = 0 По МассивИменаПолей.Количество() - 1 Цикл
            //Сообщить("Поле: " + МассивИменаПолей[Индекс])   
        КонецЦикла;
       
        //Заполнение таблицы значений
        ТЗХ = Новый ТаблицаЗначений;
        Для Индекс = 0 По МассивИменаПолей.Количество() - 1 Цикл
            ТЗХ.Колонки.Добавить(МассивИменаПолей[Индекс], ОписаниеТипаВыбора);
        КонецЦикла;   
       
        ИксБейс.Первая();
        Счетчик = 0;
       
        Пока Не ИксБейс.ВКонце() Цикл
            Счетчик = Счетчик + 1;
            //Если Счетчик > 1000 Тогда
            //    Прервать;
            //КонецЕсли;
           
            Стр = ТЗХ.Добавить();
           
            Для н = 0 По МассивИменаПолей.Количество() - 1 Цикл
                ПЛ = ИксБейс.ПолучитьЗначениеПоля(МассивСтарыхИменПолей[н]);
                Стр[МассивИменаПолей[н]] = ПЛ;
            КонецЦикла;
            
            ПоискПоТЗ(ИксБейс);
           
                                
           
            //ИксБейс.FAM="1";
            ИксБейс.Записать();
            ИксБейс.Следующая();
        КонецЦикла;   
       
       
           
        ИксБейс.ЗакрытьФайл();
       
           
       
       
    КонецПроцедуры
    
    Сдесь мы запихиваем данные в ТЗ
    Собственно потом на кнопочку Загрузить запихиваем эту процедуру
    Далее поиск:
    Код:
    Процедура ПоискПоТЗ(стр);
            //Для каждого стр из ТЗХ Цикл
               
            НаименованиеДляПоиска123 = СокрЛП(стр.FAM)+" "+СокрЛП(стр.NAME)+" "+СокрЛП(стр.PAT) ;
           
            Физлицо=Справочники.ФизическиеЛица.НайтиПоНаименованию(НаименованиеДляПоиска123);
            Если Не ЗначениеЗаполнено(Физлицо) Тогда
            Сообщить("Создайте новое физлицо: "+НаименованиеДляПоиска123);
            КонецЕсли;
           
            //заполняем столбец FULLAREA
           
            Запрос= Новый запрос;
            Запрос.Текст=("ВЫБРАТЬ
                          |    КВП_ПлощадьПомещенияСрезПоследних.Объект,
                          |    КВП_ПлощадьПомещенияСрезПоследних.ВидПлощади,
                          |    КВП_ПлощадьПомещенияСрезПоследних.Площадь
                          |ИЗ
                          |    РегистрСведений.КВП_ПлощадьПомещения.СрезПоследних КАК КВП_ПлощадьПомещенияСрезПоследних");
            Выборка = Запрос.Выполнить().Выбрать();
            Если Выборка.Следующий()Тогда
            стр.FLAT="";
            стр.FULLAREA=Выборка.Площадь;
            КонецЕсли;
               
    
       
    
           // КонецЦикла;
    КонецПроцедуры
    
    Вообще в том направлении рою?)
  8. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    а как на форму вывести саму ТЗ(чтобы видно было)?
  9. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Да как обычно: ТЧ объекта или реквизит формы.
  10. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    По коду имею ввиду, что там написать(если можно примерчик маленький)
  11. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    ээээ....Объект.<ИмяТЧ>.Загрузить(ТЗ) или <ИмяРеквизитаФормы>.Загрузить()
  12. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Код:
    // Переменные и объекты, что бы не создавать постоянно в цикле
        ОписаниеБулево = Новый ОписаниеТипов("Булево");
        ОписаниеДаты = Новый ОписаниеТипов("Дата",,, Новый КвалификаторыДаты(ЧастиДаты.Дата));
    
        // Создание таблицы значений
        ТаблицаЗначений = Новый ТаблицаЗначений;
        Для Каждого Поле из Xbase.Поля Цикл
            //Колонка =
            ТекущаяКолонка=ТекущаяКолонка+1 ;
            //СписокКолонок.НайтиПоЗначению(Поле.Имя);
            Если ТекущаяКолонка <> Неопределено Тогда
                Если Поле.Тип = "L" Тогда
                    Тип = ОписаниеБулево;
                ИначеЕсли Поле.Тип = "D" Тогда
                    Тип = ОписаниеДаты;
                ИначеЕсли (Поле.Тип = "N") ИЛИ (Поле.Тип = "F") Тогда
                    Тип = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(Поле.Длина, Поле.Точность));
                Иначе
                    Тип = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(Поле.Длина));
                КонецЕсли;
                ТаблицаЗначений.Колонки.Добавить(ТекущаяКолонка.Представление, Тип);
            КонецЕсли;
        КонецЦикла;
    
        // Заполнение строк таблицы
        Если (ТаблицаЗначений.Колонки.Количество() <> 0) И (XBase.Первая()) Тогда
            Пока Истина Цикл
                СтрокаТаб = ТаблицаЗначений.Добавить();
                Для Каждого Поле из XBase.Поля Цикл
                    //Колонка =
                    ТекущаяКолонка=ТекущаяКолонка+1;
                    //СписокКолонок.НайтиПоЗначению(Поле.Имя);
                    Если (ТекущаяКолонка <> Неопределено) И ТекущаяКолонка.Пометка Тогда
                        СтрокаТаб[ТекущаяКолонка.Представление] = XBase[Поле.Имя];
                    КонецЕсли;
                КонецЦикла;
                Если Не XBase.Следующая() Тогда Прервать; КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    
        XBase.ЗакрытьФайл();
        Возврат ТаблицаЗначений;
    
    соответственно на форме создал реквизит типа(таблица значений) - наименование- таблица значений
    (добавил пару реквизитов(FAM, NAME)

    Возникает ошибка

    ТаблицаЗначений = Новый ТаблицаЗначений;
    по причине:
    Нельзя изменять поле, содержащее объект данных формы

    Как это исправить?
  13. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Она уже создана.
  14. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    ээ...вроде должна выводится, а не выводит
    чего не хватает?))
  15. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Колонки в ТЗ необходимо добавить вручную.
  16. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    сделано.)
    --- Объединение сообщений, 15 сен 2016 ---
    Но не выводит

    Вложения:

    • 12.JPG
      12.JPG
      Размер файла:
      72 КБ
      Просмотров:
      5
    Последнее редактирование: 15 сен 2016
  17. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    вот у меня выводит в табличный документ данные, а надо в таблицу значений, а я не знаю как вывести, одно дело создать).
  18. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    ээээ....забыть про табличный документ и добавлять строки в ТЗ. В чем сложности прочитать про методы ТЗ в синтаксис-помощнике?
  19. TopicStarter Overlay
    ифкпфт009
    Offline

    ифкпфт009 Опытный в 1С

    Регистрация:
    23 апр 2014
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Ну с этим делом разобрался, но чет не понял как сделать такую штучку:
    вот загрузил данные в тз и вывел пользователю, а как сделать чтоб данные с тз подцепились с данными 1с
    тобишь файлик содержит сведения о жильцах и нужно чтобы он их подцепил со справочника жильцы.
    это как сделать? если можно то поподробнее.)
  20. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Запросом получать данные из БД и выводить их в эту же ТЗ.

Поделиться этой страницей