новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Помогите с сохранением выгрузки в сбербанк выписка квитанции

    • #1
    • 11.10.2017 10:54
    0
    Добрый день народ! Помогите решить проблему с выгрузкой родительской платы в сбербанк. Ломаю голову не могу сохранить в отдельный файл значения в отдельности для каждого учреждения выписки квитанции. Сохраняет только по последнему выбранному учреждению в табличной части обработки во все файл. Если например я заполняю 3 учреждения МБДОУ № 9,МБДОУ № 11,МБДОУ № 13 то берет в три файла детишек именно МБДОУ № 13. Простите если что недопонимаю но мне кажется тут ошибка. На скриншоте видно. Для Каждого СтрокаТаблицы ИЗ АнализВыгрузки Цикл; Текст.Записать((СтрокаТаблицы.ИмяФайлаВыгрузки), "windows-1251"); КонецЦикла;
    • #2
    • 11.10.2017 10:54
    0
    Обработка
    • #3
    • 11.10.2017 10:58
    0
    Перем СписокДок;
    Перем мСписокВидовОпераций;
    Перем мВалютаРегламентированногоУчета;

    Процедура КнопкаНастройкаПериодаНажатие(Элемент)

    ТиповыеОтчеты.НастроитьПериод(НастройкаПериода, ДатаНачала, ДатаОкончания);

    КонецПроцедуры

    Функция ВернутьУчреждение()
    СтрокаТаблицы = ЭлементыФормы.АнализВыгрузки.ТекущиеДанные;
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | яяСоответствиеУчреждений.КодУчреждения
    |ИЗ
    | РегистрСведений.яяСоответствиеУчреждений КАК яяСоответствиеУчреждений
    |ГДЕ
    | яяСоответствиеУчреждений.Учреждение В (&Учреждение)";
    Запрос.УстановитьПараметр("Учреждение",СтрокаТаблицы.Учреждение);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
    РезультатВыборки= Выборка.КодУчреждения;
    КонецЕсли;

    //Сообщить("Не найдено соответствие учреждения по коду: "+СокрЛП(КодУчреждения));

    Возврат РезультатВыборки;

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

    Функция ПолучитьИННУчрежденияДляВыгрузкиВФайл()
    СтрокаТаблицы = ЭлементыФормы.АнализВыгрузки.ТекущиеДанные;

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Организации.ИНН КАК ИННУчреждения
    |ИЗ
    | Справочник.Организации КАК Организации
    |ГДЕ
    | Организации.Ссылка В (&Учреждение)";

    Запрос.УстановитьПараметр("Учреждение",СтрокаТаблицы.Учреждение);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    РезультатВыборки = ВыборкаДетальныеЗаписи.ИННУчреждения;
    КонецЦикла;

    Возврат РезультатВыборки;

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

    Процедура КнопкаВыгрузитьНажатие(Кнопка)


    Текст = Новый ТекстовыйДокумент;
    Запрос = Новый Запрос;

    ТекстЗапроса = "ВЫБРАТЬ
    | СоответствиеУчреждений.КодУчреждения КАК Код,
    | РП_ВыпискаКвитанций.Учреждение.Наименование КАК Наименование,
    | ВЫБОР
    | КОГДА (ВЫРАЗИТЬ(РП_ВыпискаКвитанций.РеквизитыЛицевогоСчета.КорреспондентТекст КАК СТРОКА(1000))) = """"
    | ТОГДА РП_ВыпискаКвитанций.Учреждение.НаименованиеПолное
    | ИНАЧЕ РП_ВыпискаКвитанций.РеквизитыЛицевогоСчета.КорреспондентТекст
    | КОНЕЦ КАК НаименованиеПолное,
    | ВЫБОР
    | КОГДА РП_ВыпискаКвитанций.РеквизитыЛицевогоСчета.КорреспондентИНН = """"
    | ТОГДА РП_ВыпискаКвитанций.Учреждение.ИНН
    | ИНАЧЕ РП_ВыпискаКвитанций.РеквизитыЛицевогоСчета.КорреспондентИНН
    | КОНЕЦ КАК ИНН,
    | ВЫБОР
    | КОГДА РП_ВыпискаКвитанций.РеквизитыЛицевогоСчета.КорреспондентКПП = """"
    | ТОГДА РП_ВыпискаКвитанций.Учреждение.КПП
    | ИНАЧЕ РП_ВыпискаКвитанций.РеквизитыЛицевогоСчета.КорреспондентКПП
    | КОНЕЦ КАК КПП,
    | РеквизитыЛицевыхСчетов.БИК,
    | РеквизитыЛицевыхСчетов.КоррСчет,
    | РеквизитыЛицевыхСчетов.НаименованиеБанка,
    | РеквизитыЛицевыхСчетов.РасчетныйСчет,
    | РП_ВыпискаКвитанций.Учреждение.КодОКАТО КАК ОКАТО,
    | РП_ВыпискаКвитанций.КБКСчетУчетаРП,
    | РП_ВыпискаКвитанций.Ссылка
    |ИЗ
    | Документ.РП_ВыпискаКвитанций КАК РП_ВыпискаКвитанций
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    | РеквизитыЛицевыхСчетов.СчетКазначейства.КассовыйОрган.Код КАК БИК,
    | РеквизитыЛицевыхСчетов.СчетКазначейства.КассовыйОрган.КоррСчет КАК КоррСчет,
    | РеквизитыЛицевыхСчетов.СчетКазначейства.КассовыйОрган.Наименование КАК НаименованиеБанка,
    | РеквизитыЛицевыхСчетов.СчетКазначейства.Код КАК РасчетныйСчет,
    | РеквизитыЛицевыхСчетов.Ссылка КАК Ссылка
    | ИЗ
    | Справочник.РеквизитыЛицевыхСчетов КАК РеквизитыЛицевыхСчетов
    | ГДЕ
    | РеквизитыЛицевыхСчетов.Владелец.ТипЛицевогоСчета = ЗНАЧЕНИЕ(Перечисление.ТипыЛицевыхСчетов.Казначейский)
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | РеквизитыЛицевыхСчетов.КассовыйОрган.Код,
    | РеквизитыЛицевыхСчетов.КассовыйОрган.КоррСчет,
    | РеквизитыЛицевыхСчетов.КассовыйОрган.Наименование,
    | РеквизитыЛицевыхСчетов.Владелец.Код,
    | РеквизитыЛицевыхСчетов.Ссылка
    | ИЗ
    | Справочник.РеквизитыЛицевыхСчетов КАК РеквизитыЛицевыхСчетов
    | ГДЕ
    | РеквизитыЛицевыхСчетов.Владелец.ТипЛицевогоСчета = ЗНАЧЕНИЕ(Перечисление.ТипыЛицевыхСчетов.Банковский)) КАК РеквизитыЛицевыхСчетов
    | ПО РП_ВыпискаКвитанций.РеквизитыЛицевогоСчета.Ссылка = РеквизитыЛицевыхСчетов.Ссылка
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    | яяСоответствиеУчреждений.КодУчреждения КАК КодУчреждения,
    | яяСоответствиеУчреждений.Учреждение КАК Учреждение
    | ИЗ
    | РегистрСведений.яяСоответствиеУчреждений КАК яяСоответствиеУчреждений) КАК СоответствиеУчреждений
    | ПО РП_ВыпискаКвитанций.Учреждение.Ссылка = СоответствиеУчреждений.Учреждение.Ссылка
    |ГДЕ
    | РП_ВыпискаКвитанций.Дата >= &НачПериода
    | И РП_ВыпискаКвитанций.Дата <= &КонПериода
    | И РП_ВыпискаКвитанций.Проведен = ИСТИНА
    | И РП_ВыпискаКвитанций.Учреждение В(&Учреждение)
    |
    |УПОРЯДОЧИТЬ ПО
    | Код";

    Запрос.Текст = ТекстЗапроса;


    Для Каждого СтрокаТаблицы ИЗ АнализВыгрузки Цикл;

    Запрос.УстановитьПараметр("Учреждение",СтрокаТаблицы.Учреждение);

    КонецЦикла;

    Запрос.УстановитьПараметр("НачПериода", НачалоДня(ДатаНачала));
    Запрос.УстановитьПараметр("КонПериода", КонецДня(ДатаОкончания));

    ВыборкаДокументов = Запрос.Выполнить().Выбрать();

    ТекстЗапроса = "ВЫБРАТЬ
    | РП_ВыпискаКвитанцийКвитанции.Ребенок.Код КАК ЛицевойСчет,
    | РП_ВыпискаКвитанцийКвитанции.Ссылка.ГруппаДетскогоУчреждения.Наименование КАК Группа,
    | ВложенныйЗапрос.ЗначениеХарактеристики КАК ДатаРождения,
    | РП_ВыпискаКвитанцийКвитанции.Ребенок.Контрагент.Фамилия + "" "" + РП_ВыпискаКвитанцийКвитанции.Ребенок.Контрагент.Имя + "" "" + РП_ВыпискаКвитанцийКвитанции.Ребенок.Контрагент.Отчество КАК ФИО,
    | РП_ВыпискаКвитанцийКвитанции.Сумма,
    | РП_ВыпискаКвитанцийКвитанции.Ссылка.КБКСчетУчетаРП КАК КБК,
    | яяСоответствиеУчреждений.КодУчреждения КАК КодУчреждения,
    | яяСоответствиеУчреждений.Учреждение КАК УЧРЕЖДЕНИЕ
    |ИЗ
    | Документ.РП_ВыпискаКвитанций.Квитанции КАК РП_ВыпискаКвитанцийКвитанции
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    | ХарактеристикиКонтрагентов.ЗначениеХарактеристики КАК ЗначениеХарактеристики,
    | Дети.Ссылка КАК Ссылка
    | ИЗ
    | Справочник.Дети КАК Дети
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХарактеристикиКонтрагентов КАК ХарактеристикиКонтрагентов
    | ПО Дети.Контрагент = ХарактеристикиКонтрагентов.Контрагент
    | ГДЕ
    | ХарактеристикиКонтрагентов.ВидХарактеристики = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыХарактеристикКонтрагентов.ДатаРождения)) КАК ВложенныйЗапрос
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.яяСоответствиеУчреждений КАК яяСоответствиеУчреждений
    | ПО ВложенныйЗапрос.Ссылка.Учреждение = яяСоответствиеУчреждений.Учреждение
    | ПО РП_ВыпискаКвитанцийКвитанции.Ребенок.Ссылка = ВложенныйЗапрос.Ссылка
    |ГДЕ
    | РП_ВыпискаКвитанцийКвитанции.Ссылка = &Ссылка";

    СчетчикЗадолженностей = 0;

    Пока ВыборкаДокументов.Следующий() Цикл

    Запрос.Текст = ТекстЗапроса;

    Запрос.УстановитьПараметр("Ссылка", ВыборкаДокументов.Ссылка);
    ВыборкаДети = Запрос.Выполнить().Выбрать();
    Пока ВыборкаДети.Следующий() Цикл

    СчетчикЗадолженностей = СчетчикЗадолженностей + 1;

    Текст.ДобавитьСтроку(СокрЛП(ВыборкаДети.ЛицевойСчет)+
    ";"+СокрЛП(ВыборкаДети.ФИО)+
    ";"+СокрЛП(СтрокаТаблицы.Учреждение)+
    ";"+СокрЛП("000"+ВыборкаДети.КБК)+
    ";"+СокрЛП("04701000")+
    ";"+Формат(ВыборкаДети.Сумма, "ЧГ=0; ЧН=0.00; ЧРД='.'; ЧЦ=15; ЧДЦ=2"));

    КонецЦикла;


    КонецЦикла;


    Для Каждого СтрокаТаблицы ИЗ АнализВыгрузки Цикл;
    Текст.Записать((СтрокаТаблицы.ИмяФайлаВыгрузки), "windows-1251");
    КонецЦикла;


    Сообщить("Выгрузка успешно выполнена",СтатусСообщения.Информация);

    ОбработкаПрерыванияПользователя();

    КонецПроцедуры

    Процедура ОткрытьФайлДляПросмотра(Элемент, Заголовок)

    СтандартнаяОбработка = Ложь;

    ФайлНаДиске = Новый Файл(Элемент.Значение);
    Если Не ФайлНаДиске.Существует() Тогда
    Предупреждение("Не найден файл!");
    Возврат;
    КонецЕсли;

    Текст = Новый ТекстовыйДокумент();
    Текст.Прочитать(Элемент.Значение);
    Текст.Показать(Заголовок,Элемент.Значение);

    КонецПроцедуры



    Процедура ПриОткрытии()

    УдалятьФайлы = Истина;

    КонецПроцедуры

    Процедура АнализВыгрузкиУчреждениеПриИзменении(Элемент)
    СтрокаТаблицыВыгрузки = ЭлементыФормы.АнализВыгрузки.ТекущиеДанные;
    СтрокаТаблицыВыгрузки.КодУчреждения = ВернутьУчреждение();
    СтрокаТаблицыВыгрузки.ИНН = ПолучитьИННУчрежденияДляВыгрузкиВФайл();
    КонецПроцедуры

    Процедура АнализВыгрузкиИмяФайлаВыгрузкиНачалоВыбора(Элемент, СтандартнаяОбработка)
    //
    СтрокаТаблицы = ЭлементыФормы.АнализВыгрузки.ТекущиеДанные;
    СтандартнаяОбработка = Ложь;
    ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    ДиалогВыбораФайла.МножественныйВыбор = Ложь;
    ДиалогВыбораФайла.Заголовок = "Укажите имя файла выгрузки";
    ДиалогВыбораФайла.ПолноеИмяФайла = СокрЛП(СтрокаТаблицы.ИНН)+"_sberbank_RP_Plata";

    ДиалогВыбораФайла.Фильтр = "Текстовые(*.txt)|*.txt";
    Если ДиалогВыбораФайла.Выбрать() Тогда
    СтрокаТаблицы.ИмяФайлаВыгрузки = ДиалогВыбораФайла.ПолноеИмяФайла;
    КонецЕсли;

    КонецПроцедуры

    Процедура АнализВыгрузкиИмяФайлаВыгрузкиОткрытие(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = ложь;
    ОткрытьФайлДляПросмотра(Элемент,"Файл выгрузки");
    КонецПроцедуры

    Процедура АнализВыгрузкиИННПриИзменении(Элемент)
    СтрокаТаблицыВыгрузки = ЭлементыФормы.АнализВыгрузки.ТекущиеДанные;
    СтрокаТаблицыВыгрузки.КодУчреждения = ВернутьУчреждение();
    СтрокаТаблицыВыгрузки.ИНН = ПолучитьИННУчрежденияДляВыгрузкиВФайл();

    КонецПроцедуры

    Процедура АнализВыгрузкиУчреждениеОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
    СтрокаТаблицыВыгрузки = ЭлементыФормы.АнализВыгрузки.ТекущиеДанные;
    СтрокаТаблицыВыгрузки.КодУчреждения = ВернутьУчреждение();
    КонецПроцедуры

    Процедура АнализВыгрузкиПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    СтрокаТаблицыВыгрузки = ЭлементыФормы.АнализВыгрузки.ТекущиеДанные;
    СтрокаТаблицыВыгрузки.КодУчреждения = ВернутьУчреждение();
    КонецПроцедуры



    СписокДок = Новый СписокЗначений;
    НастройкаПериода = Новый НастройкаПериода;
    мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
    • #4
    • 30.10.2017 18:00
    +1
    Здравствуйте. Вижу логическую ошибку в вашем коде.
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться