Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
11 Дек 2017, 14:55
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Проблемы с выгрузкой  (Прочитано 658 раз)

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

Оффлайн stix

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-04-19
  • Сайт: 
  • Профессия: Ученик 1С
1c 8.2 Бухгалтерия для Казахстана... Есть регламентное задание чтобы выгружать в MS SQL даные в две таблицы - tb_PaymentStud и tb_FinanceStud... в tb_PaymentStud данные выгружаются,  а в tb_FinanceStud - нет. Помогите ,пожалуйста , разобраться с этой проблемой. Всем заранее благодарен за советы
Процедура ВыгрузитьОплатуВЕКИС(ДатаНачала, ДатаОкончания, ТаблицаОплаты = Неопределено) Экспорт

БазаСтудентов = Справочники.SP_ПодключениеКВнешнимИБ.БазаАбитуриентовСтудентов;
БазаСтудентовИмя = Справочники.SP_ПодключениеКВнешнимИБ.БазаАбитуриентовСтудентов.ИмяИБНаСервере;

#Если Клиент Тогда
Состояние("Идет подключение к базе """ + БазаСтудентов.Наименование + """...");
#КонецЕсли

СтруктураПодключения = МодульРегламентныхЗаданий.ПодключитьВнешнююИнформационнуюБазу(БазаСтудентов);
Если СтруктураПодключения = Неопределено Тогда
Возврат;
КонецЕсли;

Соединение = СтруктураПодключения.Соединение;

СтруктураЗагрузки = ПолучитьСтруктуруЗагрузки(БазаСтудентов, Соединение);

ДобавитьЗаписьВЛогФайл("------------------------------------", СтруктураЗагрузки);
ДобавитьЗаписьВЛогФайл("Начало выгрузки оплаты: " + ТекущаяДата(), СтруктураЗагрузки);
#Если Клиент Тогда
Сообщить("------------------------------------");
Сообщить("Начало выгрузки оплаты: " + ТекущаяДата());
ДобавитьЗаписьВЛогФайл("Пользователь: " + глЗначениеПеременной("глТекущийПользователь"), СтруктураЗагрузки);
Сообщить("1. Очистка таблицы оплаты!");
#Иначе
ДобавитьЗаписьВЛогФайл("Пользователь: регламентное задание", СтруктураЗагрузки);
#КонецЕсли

ДобавитьЗаписьВЛогФайл("1. Очистка таблицы оплаты!", СтруктураЗагрузки);

Попытка             
Соединение.Execute("DELETE tb_PaymentStud WHERE Date_Pay >= '" + Формат(ДатаНачала, "ДФ=""гггг-MM-дд""") + "' AND Date_Pay <= '" + Формат(ДатаОкончания, "ДФ=""гггг-MM-дд""") + "'");
Исключение

#Если Клиент Тогда
Сообщить("Не удалось очистить таблицу оплаты в ЕКИС. Выгрузка не осуществлена!");
Сообщить(ОписаниеОшибки());
#КонецЕсли
ДобавитьЗаписьВЛогФайл("Не удалось очистить таблицу оплаты в ЕКИС. Выгрузка не осуществлена!", СтруктураЗагрузки);
ДобавитьЗаписьВЛогФайл(ОписаниеОшибки(), СтруктураЗагрузки);
Возврат;

КонецПопытки;

ТекущийПользователь = Справочники.Пользователи.ЕКИС;
мОрганизация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекущийПользователь, "ОсновнаяОрганизация");

#Если Клиент Тогда
Сообщить("2. Выгрузка таблицы оплаты!");
#КонецЕсли
ДобавитьЗаписьВЛогФайл("2. Выгрузка таблицы оплаты!", СтруктураЗагрузки);

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

Если ТаблицаОплаты = Неопределено Тогда
ТекстЗапроса = "ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(ТаблицаПоСтудентам.Период, МЕСЯЦ) КАК ПериодРегистрации,
| ТаблицаПоСтудентам.Студент КАК Студент,
| ТаблицаПоСтудентам.ВидНачисления КАК ВидНачисления,
| ТаблицаПоСтудентам.Регистратор,
| СУММА(ВЫБОР
| КОГДА ТаблицаПоСтудентам.КодОперации = ЗНАЧЕНИЕ(Перечисление.SP_КодыОперацийРасчетовСоСтудентами.Оплата)
| ТОГДА ТаблицаПоСтудентам.Сумма
| ИНАЧЕ 0
| КОНЕЦ) КАК Оплата,
| СУММА(ВЫБОР
| КОГДА ТаблицаПоСтудентам.КодОперации = ЗНАЧЕНИЕ(Перечисление.SP_КодыОперацийРасчетовСоСтудентами.Возврат)
| ТОГДА -ТаблицаПоСтудентам.Сумма
| ИНАЧЕ 0
| КОНЕЦ) КАК ВозвратОплаты
|ПОМЕСТИТЬ ВТ_ТаблицаПоСтудентам
|ИЗ
| РегистрНакопления.SP_РасчетыСоСтудентами КАК ТаблицаПоСтудентам
|ГДЕ
| ТаблицаПоСтудентам.Организация = &парамОрганизация
| И ТаблицаПоСтудентам.Период МЕЖДУ &парамНачало И &парамКонец
| И (ТаблицаПоСтудентам.КодОперации = ЗНАЧЕНИЕ(Перечисление.SP_КодыОперацийРасчетовСоСтудентами.Оплата) ИЛИ
| ТаблицаПоСтудентам.КодОперации = ЗНАЧЕНИЕ(Перечисление.SP_КодыОперацийРасчетовСоСтудентами.Возврат))
| И НЕ ТаблицаПоСтудентам.Регистратор ССЫЛКА Документ.SP_ПереносОплатыЗаОбучение
|
|СГРУППИРОВАТЬ ПО
| НАЧАЛОПЕРИОДА(ТаблицаПоСтудентам.Период, МЕСЯЦ),
| ТаблицаПоСтудентам.Студент,
| ТаблицаПоСтудентам.ВидНачисления,
| ТаблицаПоСтудентам.Регистратор
|
|ИМЕЮЩИЕ
| НЕ СУММА(ТаблицаПоСтудентам.Сумма) = 0
|;
|////////////////////////////////////////////";
Иначе
Запрос.УстановитьПараметр("Оплата", ТаблицаОплаты);
ТекстЗапроса = "ВЫБРАТЬ
| ТаблицаПоСтудентам.ПериодРегистрации КАК ПериодРегистрации,
| ТаблицаПоСтудентам.Студент КАК Студент,
| ТаблицаПоСтудентам.ВидНачисления КАК ВидНачисления,
| ТаблицаПоСтудентам.Регистратор КАК Регистратор,
| ТаблицаПоСтудентам.Оплата КАК Оплата,
| ТаблицаПоСтудентам.ВозвратОплаты КАК ВозвратОплаты
|ПОМЕСТИТЬ ВТ_ТаблицаПоСтудентам
|ИЗ
| &Оплата КАК ТаблицаПоСтудентам
|;
|////////////////////////////////////////////";
КонецЕсли;

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

Оплата = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Оплата Цикл

#Если Клиент Тогда
Состояние("Добавление студента в таблицу оплаты: " + Строка.Студент);
#КонецЕсли

ДатаНачалаУчебногоГода = SP_УправлениеРасчетамиСоСтудентами.ПолучитьДатуНачалаУчебногоГода(Строка.ПериодРегистрации);

ТекстЗапроса = "INSERT INTO tb_PaymentStud (IKT, Date_Pay, KodVid_Pay, PaymentSum, PaymentDoc, UchYear) VALUES (
|'" + Строка.Студент.ИКТ + "',
|'" + Формат(Строка.ПериодРегистрации, "ДФ=""гггг-MM-дд""") + "',
|'" + Строка.ВидНачисления.Код + "',
|" + СтрЗаменить(УбратьПробелы(Строка((Строка.Оплата - Строка.ВозвратОплаты))), ",", ".") + ",
|'" + Строка.Регистратор + "',
|" + УбратьПробелы(Строка(Год(ДатаНачалаУчебногоГода))) + ")";

Попытка             
Соединение.Execute(Строка(ТекстЗапроса));
Исключение

#Если Клиент Тогда
Сообщить("Не удалось загрузить студента """ + Строка.Студент + """ в таблицу оплаты!");
Сообщить(ОписаниеОшибки());
#КонецЕсли
ДобавитьЗаписьВЛогФайл("Не удалось загрузить студента """ + Строка.Студент + """ в таблицу оплаты!", СтруктураЗагрузки);
ДобавитьЗаписьВЛогФайл(ОписаниеОшибки(), СтруктураЗагрузки);
    Продолжить;

КонецПопытки;

#Если Клиент Тогда
ОбработкаПрерыванияПользователя();
#КонецЕсли

КонецЦикла;

#Если Клиент Тогда
Сообщить("3. Пересчет сводной таблицы!");
#КонецЕсли
ДобавитьЗаписьВЛогФайл("3. Пересчет сводной таблицы!", СтруктураЗагрузки);

НаборЗаписей = Новый COMОбъект("ADODB.Recordset");

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

ВыборкаСтудент = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

ВыборкаВидНачисления = ВыборкаСтудент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаВидНачисления.Следующий() Цикл

УспешноОбновлено = Истина;
Выборка = ВыборкаВидНачисления.Выбрать();
Пока Выборка.Следующий() Цикл
ТекстЗапроса = "SELECT
| IKT,
| Date_Pay,
| KodVid_Pay,
| BeginSum,
| YearCost,
| LgotaSum,
| PaymentSum,
| ReturnPayment,
| AmnestySum,
| TransferSum,
| EndSum,
| UchYear
|FROM tb_FinanceStud
| WHERE IKT = '" + Выборка.Студент.ИКТ + "'
| AND KodVid_Pay = '" + Выборка.ВидНачисления.Код + "'
| AND Date_Pay >= '" + Формат(Выборка.ПериодРегистрации, "ДФ=""гггг-MM-дд""") + "'";

Попытка             
НаборЗаписей = Соединение.Execute(Строка(ТекстЗапроса));
Исключение
#Если Клиент Тогда
Сообщить("Не удалось подкоючиться к сводной таблице!");
Сообщить(ОписаниеОшибки());
#КонецЕсли
ДобавитьЗаписьВЛогФайл("Не удалось подкоючиться к сводной таблице!", СтруктураЗагрузки);
ДобавитьЗаписьВЛогФайл(ОписаниеОшибки(), СтруктураЗагрузки);

Перейти ~метка1;

КонецПопытки;

ПериодРегистрации = Выборка.ПериодРегистрации;
Пока НаборЗаписей.EOF() = 0 Цикл

Если ПериодРегистрации < НаборЗаписей.Fields("Date_Pay").Value Тогда
ОстатокНаНачало = 0;
Иначе
ОстатокНаНачало = НаборЗаписей.Fields("BeginSum").Value;
КонецЕсли;
Оплата = ?(ПериодРегистрации = Выборка.ПериодРегистрации, Выборка.Оплата, 0);
ВозвратОплаты = ?(ПериодРегистрации = Выборка.ПериодРегистрации, Выборка.ВозвратОплаты, 0);

Пока ПериодРегистрации < НаборЗаписей.Fields("Date_Pay").Value Цикл

#Если Клиент Тогда
Состояние("Добавление студента """ + Выборка.Студент + """ в сводную таблицу!");
#КонецЕсли

ДатаНачалаУчебногоГода = SP_УправлениеРасчетамиСоСтудентами.ПолучитьДатуНачалаУчебногоГода(Выборка.ПериодРегистрации);
                ОстатокНаКонец = ОстатокНаНачало - Оплата + ВозвратОплаты;
ТекстЗапроса = "INSERT INTO tb_FinanceStud (IKT, Date_Pay, KodVid_Pay, BeginSum, YearCost, LgotaSum, PaymentSum, ReturnPayment, AmnestySum, TransferSum, EndSum, UchYear) VALUES (
|'" + Выборка.Студент.ИКТ + "',
|'" + Формат(ПериодРегистрации, "ДФ=""гггг-MM-дд""") + "',
|'" + Выборка.ВидНачисления.Код + "',
|" + СтрЗаменить(УбратьПробелы(Строка(ОстатокНаНачало)), ",", ".") + ",
|0,
|0,
|" + СтрЗаменить(УбратьПробелы(Строка(Оплата)), ",", ".") + ",
|" + СтрЗаменить(УбратьПробелы(Строка(ВозвратОплаты)), ",", ".") + ",
|0,
|0,
|" + СтрЗаменить(УбратьПробелы(Строка(ОстатокНаКонец)), ",", ".") + ",
|" + УбратьПробелы(Строка(Год(ДатаНачалаУчебногоГода))) + ")";

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

ОстатокНаНачало = ОстатокНаКонец;
ПериодРегистрации = ДобавитьМесяц(ПериодРегистрации, 1);

КонецЦикла;

Если Не УспешноОбновлено Тогда
Прервать;
КонецЕсли;

#Если Клиент Тогда
Состояние("Обновление студента """ + Выборка.Студент + """ в сводной таблице!");
#КонецЕсли

ОстатокНаКонец = ОстатокНаНачало + НаборЗаписей.Fields("YearCost").Value - НаборЗаписей.Fields("LgotaSum").Value - Оплата + ВозвратОплаты + НаборЗаписей.Fields("TransferSum").Value - НаборЗаписей.Fields("AmnestySum").Value;
ТекстЗапроса = "UPDATE tb_FinanceStud SET
|BeginSum = " + СтрЗаменить(УбратьПробелы(Строка(ОстатокНаНачало)), ",", ".") + ",
|PaymentSum = " + СтрЗаменить(УбратьПробелы(Строка(Оплата)), ",", ".") + ",
|ReturnPayment = " + СтрЗаменить(УбратьПробелы(Строка(ВозвратОплаты)), ",", ".") + ",
|EndSum = " + СтрЗаменить(УбратьПробелы(Строка(ОстатокНаКонец)), ",", ".") + "
|WHERE IKT = '" + Выборка.Студент.ИКТ + "'
| AND KodVid_Pay = '" + Выборка.ВидНачисления.Код + "'
| AND Date_Pay = '" + Формат(ПериодРегистрации, "ДФ=""гггг-MM-дд""") + "'";
Попытка             
СтруктураЗагрузки.Соединение.Execute(Строка(ТекстЗапроса));
Исключение
Комментарий = "Не удалось для студента """ + Выборка.Студент + """ обновить сводную таблицу!";
#Если Клиент Тогда
Сообщить(Комментарий, СтатусСообщения.Внимание);
Сообщить(ОписаниеОшибки());
#КонецЕсли
ДобавитьЗаписьВЛогФайл(Комментарий, СтруктураЗагрузки);
ДобавитьЗаписьВЛогФайл(ОписаниеОшибки(), СтруктураЗагрузки);
УспешноОбновлено = Ложь;
Прервать;
КонецПопытки;

ОстатокНаНачало = ОстатокНаКонец;

НаборЗаписей.MoveNext();

#Если Клиент Тогда
ОбработкаПрерыванияПользователя();
#КонецЕсли

КонецЦикла;

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

КонецЦикла;

~метка1:

#Если Клиент Тогда
Сообщить("Выгрузка оплаты закончена!
|------------------------------------");
#КонецЕсли
ДобавитьЗаписьВЛогФайл("Выгрузка оплаты закончена!", СтруктураЗагрузки);
ДобавитьЗаписьВЛогФайл("------------------------------------", СтруктураЗагрузки);

#Если Клиент Тогда
Состояние("Идет отключение от базы """ + БазаСтудентов.Наименование + """...");
#КонецЕсли

Соединение = Неопределено;

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

Процедура ВыгрузитьОплатуВЕКИСРегламентнымЗаданием() Экспорт

ВыгрузитьОплатуВЕКИС(НачалоДня(ТекущаяДата()), КонецДня(ТекущаяДата()));

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



Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
проверяйте что возвращает запрос по финансам на стороне 1с
и каким то чудом (оооооочень мало общался с transact-sql) отлаживайте запрос на стороне сервера
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.


Теги:
 

Закрытие 97 счета, проблемы с закрытием 97 счета в НУ

Автор LisenokkРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 6845
Последний ответ 20 Июн 2011, 20:39
от Lisenokk
БГУ - проблемы с отчетом "ЖурналОпераций0504071"

Автор burbonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 4250
Последний ответ 12 Окт 2011, 12:42
от burbon
Управление торговлей и управление складом. Проблемы обмена данными.

Автор CabinetonlineРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 3025
Последний ответ 12 Мар 2013, 12:54
от Slin
С этого года УСН (доходы-расходы), проблемы с формированием книги, помогите.

Автор LapkaРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 2398
Последний ответ 16 Фев 2013, 07:16
от SoloSpirit
Решение проблемы возврата или обмена товара после реализации клиенту

Автор Lider1cРаздел Пользователям "1С - Предприятие 8"

Ответов: 3
Просмотров: 2757
Последний ответ 18 Дек 2014, 08:30
от SitnovaMarina

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
161 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
56 Сообщений
alex0402
46 Сообщений
andron81_81
44 Сообщений
AIFrame
35 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
28 Сообщений
BuhRust
27 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 890
  • Точка Скрытых: 0
  • Точка Пользователей: 15
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal