|
Формирование внешнего отчета в другой базе через com соединение | ☑ | ||
---|---|---|---|---|
0
Роспатнюк Сергей Сер
29.03.19
✎
10:07
|
в базе источник пишу код
ВнешняяФорма = Соединение.Справочники.ВнешниеОбработки.НайтиПоНаименованию("Выгрузка авансов в Зарплату"); НафигационнаяСсылка = Соединение.ПолучитьНавигационнуюСсылку(ВнешняяФорма,"ХранилищеВнешнейОбработки"); ИмяФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); Обр = Соединение.ВнешниеОтчеты.Создать(ИмяФайла, Ложь); Попытка Знч = Обр.ВнешнееПодключение(,Истина,Отчет.Организация.Наименование,Отчет.НачалоПериода,Отчет.КонецПериода); Исключение Сообщить("Ошибка: " + ОписаниеОшибки()); КонецПопытки; в базе приемник в отчете в модуле объекта создал экспортную функцию ВнешнееПодключение далее иду в сформировать отчет передав параметры отбора Функция ВнешнееПодключение(Результат = НеОпределено, ВнешнееПодключение = Ложь,Организация = Неопределено, НачалоПериода = НеОпределено,КонецПериода = НеОпределено) Экспорт Организация = Справочники.Организации.НайтиПоНаименованию(Организация); Если ВнешнееПодключение Тогда Результат = СформироватьОтчет(,,,,НачалоПериода,КонецПериода,Организация); КонецЕсли; Если Не Результат = НеОпределено Тогда ТблЗнч = ТабличныйДокументВТаблицуЗначений(Результат); Возврат ТблЗнч; Иначе Возврат "Нет резльтута"; КонецЕсли; КонецФункции попав в сформировать отчет начинаются проблемы типо Ошибка: Значение не является значением объектного типа (АвтоМасштаб) Результат.АвтоМасштаб = истина; , Ошибка: Индекс находится за границами массива КомпоновщикНастроек.Настройки.Отбор.Элементы[0].ПравоеЗначение = ВнОрганизация как я понимаю все это связано либо с скд, подскажите что еще нужно сделать что бы отчет взлетел ? |
|||
1
Роспатнюк Сергей Сер
29.03.19
✎
10:17
|
+ (0) на этой строке МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); Ошибка: {ВнешнийОтчет.ВыгрузкаЗарплаты.Форма.ФормаОтчета.Форма(378)}: Ошибка при вызове метода контекста (ВнешнееПодключение): Произошла исключительная ситуация (1C:Enterprise 8.3.13.1513): {ВнешнийОтчет.УнифицированнаяФормаТ51.МодульОбъекта(1430)}: Ошибка при вызове метода контекста (Выполнить)
Ошибка компоновки макета Ошибка генерации макета Ошибка получения информации набора данных Ошибка в запросе набора данных {(2, 12)}: Ожидается выражение "," ДАТАВРЕМЯ(<<?>>, 1, 1) КАК ПериодРегистрации |
|||
2
aleks_default
29.03.19
✎
10:29
|
Дык а какой отчет ты все-таки формируешь? И откуда мы знаем что у тебя в функции СформироватьОтчет(,,,,НачалоПериода,КонецПериода,Организация)
|
|||
3
Роспатнюк Сергей Сер
29.03.19
✎
10:31
|
Функция СформироватьОтчет(Результат = Неопределено, ДанныеРасшифровки = Неопределено, ВыводВФормуОтчета = Истина,ВФайл=Ложь, ВнНачПер = НеОпределено, ВнКонПер = НеОпределено, ВнОрганизация = НеОпределено) Экспорт
ЗначениеПанелипользователя = ТиповыеОтчеты.ПолучитьЗначенияНастроекПанелиПользователяОбъекта(ЭтотОбъект); НастрокаПоУмолчанию = КомпоновщикНастроек.ПолучитьНастройки(); ТиповыеОтчеты.ПолучитьПримененуюНастройку(ЭтотОбъект); НачалоПериода = НачалоМесяца(ОбщегоНазначенияЗК.ПолучитьРабочуюДату()); КонецПериода = КонецМесяца(ОбщегоНазначенияЗК.ПолучитьРабочуюДату()); //--- imp RSS 20.03.2019 устанавливаем параметры из внешнего подключения Если НЕ ВнНачПер = НеОпределено И НЕ ВнКонПер = НеОпределено Тогда НачалоПериода = НачалоМесяца(ВнНачПер); КонецПериода = КонецМесяца(ВнКонПер); Конецесли; Если Не ВнОрганизация = НеОпределено Тогда //КомпоновщикНастроек.Настройки.Отбор.Элементы[0].ПравоеЗначение = ВнОрганизация; КонецЕсли; //-- imp RSS(конец) ПараметрНачалоПериода = ТиповыеОтчеты.ПолучитьПараметр(КомпоновщикНастроек, "НачалоПериода"); Если ПараметрНачалоПериода <> Неопределено тогда НачалоПериода = Дата(ПараметрНачалоПериода.Значение); КонецЕсли; ПараметрКонецПериода = ТиповыеОтчеты.ПолучитьПараметр(КомпоновщикНастроек, "КонецПериода"); Если ПараметрКонецПериода <> Неопределено тогда КонецПериода = Дата(ПараметрКонецПериода.Значение); КонецЕсли; #Если НЕ ВнешнееСоединение Тогда Если Дата(КонецПериода) = '00010101' И Дата(НачалоПериода) = '00010101' Тогда ПараметрНачалоПериода.Значение = НачалоМесяца(РабочаяДата); НачалоПериода = НачалоМесяца(РабочаяДата); ПараметрКонецПериода.Значение = КонецМесяца(РабочаяДата); КонецПериода = КонецМесяца(РабочаяДата); КонецЕсли; #КонецЕсли Если НачалоПериода <> Неопределено и КонецПериода <> Неопределено тогда УправлениеОтчетамиЗК.ЗаменитьВСКДТекстЗапросКалендаря(СхемаКомпоновкиДанных, НачалоПериода, КонецПериода, СоответствиеНаборовДанныхИЗапросов); КонецЕсли; Подразделение = ""; ЗлементыОтбора = ТиповыеОтчеты.ПолучитьЭлементыОтбора(КомпоновщикНастроек); Для каждого ЭлементОтбора из ЗлементыОтбора Цикл Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПодразделениеОрганизации") и ЭлементОтбора.Использование тогда Подразделение = ЭлементОтбора.ПравоеЗначение; КонецЕсли; КонецЦикла; Если ТипЗнч(Подразделение) = Тип("СписокЗначений") И Подразделение.Количество() = 1 И ТипЗнч(Подразделение[0].Значение) = Тип("СправочникСсылка.ПодразделенияОрганизаций") тогда Подразделение = Подразделение[0].Значение; КонецЕсли; Если ЭтотОбъект.КомпоновщикНастроек.Настройки.Структура.Количество() > 0 тогда Сообщить("Отчет не поддерживает вывод расчетной ведомости в разрезе группировок."); КомпоновщикНастроек.ЗагрузитьНастройки(НастрокаПоУмолчанию); Возврат Результат; КонецЕсли; #Если НЕ ВнешнееСоединение Тогда //--- imp Если ВФайл Тогда Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); Диалог.Заголовок = "Выберите файл выгрузки"; НАЗВфайла = "АВАНС_"+?(День(НачалоПериода)>9,формат(День(НачалоПериода)),"0"+формат(День(НачалоПериода)))+?(Месяц(НачалоПериода)>9,формат(Месяц(НачалоПериода)),"0"+формат(Месяц(НачалоПериода)))+прав(строка(Год(НачалоПериода)),2)+"_"+?(День(КонецПериода)>9, формат(День(КонецПериода)), "0"+формат(День(КонецПериода)))+?(Месяц(КонецПериода)>9, формат(Месяц(КонецПериода)),"0"+формат(Месяц(КонецПериода)))+прав(строка(Год(КонецПериода)),2)+".TXT"; Диалог.ПолноеИмяФайла = НАЗВфайла; Диалог.ПредварительныйПросмотр = Ложь; Диалог.Фильтр = "ТХТ (*.TXT)|*.TXT|"; Если Диалог.Выбрать() Тогда База = Новый ТекстовыйДокумент; База.ИспользуемоеИмяФайла = Диалог.ПолноеИмяФайла; База.УстановитьТипФайла("windows-1251"); Стр = """Авансы"",""" + формат(НачалоПериода, "ДФ=дд.ММ.гг") + """,""" + формат(КонецПериода, "ДФ=дд.ММ.гг") + """,""" + Комментарий + """"; Если ВерсияФорматаФайла <> "1" Тогда Стр = Стр + ",""Формат файла: " + ВерсияФорматаФайла + """"; КонецЕсли; База.ДобавитьСтроку(Стр); ФайлВыгрузки = Диалог.ПолноеИмяФайла; Иначе Возврат Неопределено; КонецЕсли; КонецЕсли; #КонецЕсли //--- imp (Конец) Группировка = ТиповыеОтчеты.ДобавитьГруппировку(КомпоновщикНастроек, ""); Группировка.ПоляГруппировки.Элементы.Очистить(); ТиповыеОтчеты.ДобавитьВыбранноеПоле(КомпоновщикНастроек, "ФизЛицо"); ТиповыеОтчеты.ДобавитьВыбранноеПоле(КомпоновщикНастроек, "Должность"); ТиповыеОтчеты.ДобавитьВыбранноеПоле(КомпоновщикНастроек, "Организация"); ТиповыеОтчеты.ДобавитьВыбранноеПоле(КомпоновщикНастроек, "ГоловнаяОрганизация"); Результат.АвтоМасштаб = истина; Результат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; Результат.Очистить(); Результат.НачатьАвтогруппировкуСтрок(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаЗначений = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений); ПроцессорВывода.Вывести(ПроцессорКомпоновки); УправлениеОтчетамиЗК.УстановитьЗапросыСКДПоСоответсвию(СхемаКомпоновкиДанных.НаборыДанных, СоответствиеНаборовДанныхИЗапросов); ТаблицаЗначений.Свернуть("ФизЛицо, Должность, Организация, ГоловнаяОрганизация"); СписокФизЛиц = Новый СписокЗначений; СписокОрганизаций = Новый СписокЗначений; СписокГоловныхОрганизаций = Новый СписокЗначений; СписокФизЛиц.ЗагрузитьЗначения(ТаблицаЗначений.ВыгрузитьКолонку("ФизЛицо")); СписокОрганизаций.ЗагрузитьЗначения(ТаблицаЗначений.ВыгрузитьКолонку("Организация")); СписокГоловныхОрганизаций.ЗагрузитьЗначения(ТаблицаЗначений.ВыгрузитьКолонку("ГоловнаяОрганизация")); Результат.Очистить(); Результат.ПолеСлева = 5; Результат.ПолеСправа = 0; //Макет = ПолучитьМакет("Т51"); Если ПодробныйОтчёт Тогда Макет = ПолучитьМакет("Т51_Новая"); // imp dma Иначе Макет = ПолучитьМакет("Т51_Новая2"); // imp dma КонецЕсли; //ОбластьШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); //ОбластьПодвалСтр = Макет.ПолучитьОбласть("ИтогоПоСтранице"); ОбластьПодвалВед = Макет.ПолучитьОбласть("ИтогоПоВедомости"); РеглВалюта = Константы.ВалютаРегламентированногоУчета.Получить(); РезультатЗапроса = СформироватьЗапрос(СписокФизЛиц, СписокОрганизаций, СписокГоловныхОрганизаций, НачалоПериода, КонецПериода); Если РезультатЗапроса.Пустой() Тогда // массив с двумя строками - для разбиения на страницы ВыводимыеОбласти = Новый Массив(); ВыводимыеОбласти.Добавить(ОбластьСтрока); //ВыводимыеОбласти.Добавить(ОбластьПодвалСтр); ВыводимыеОбласти.Добавить(ОбластьПодвалВед); //Результат.Вывести(ОбластьШапкаДокумента); Результат.Вывести(ОбластьШапка); ВыводимыеОбласти.Добавить(ОбластьПодвал); ОбластьСтрока.Параметры.ФизЛицо = " " + Символы.ПС + " "; //Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(Результат, ВыводимыеОбласти, Ложь) Цикл // Результат.Вывести(ОбластьСтрока); //КонецЦикла; //Результат.Вывести(ОбластьПодвалСтр); Результат.Вывести(ОбластьПодвалВед); //Результат.Вывести(ОбластьПодвал); Результат.ПолеСлева = 5; Результат.ПолеСправа = 0; ФайлСчетчик = 0; Если ВФайл Тогда Сообщить("Выгрузка не произведена - нет данных!!!",СтатусСообщения.Важное); КонецЕсли; КомпоновщикНастроек.ЗагрузитьНастройки(НастрокаПоУмолчанию); Возврат Результат; КонецЕсли; НомерОрганизации = 1; ВыборкаПоПериодуРегистрации = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); РеглВалюта = Константы.ВалютаРегламентированногоУчета.Получить(); ФайлСчетчик = 0; ФайлОбщСуммаБезНДФЛ = 0; ФайлОбщСуммаНДФЛ = 0; Пока ВыборкаПоПериодуРегистрации.Следующий() Цикл ВыборкаПоОрганизациям = ВыборкаПоПериодуРегистрации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); КоличествоОрганизаций = ВыборкаПоОрганизациям.Количество(); Пока ВыборкаПоОрганизациям.Следующий() Цикл // массив с двумя строками - для разбиения на страницы ВыводимыеОбласти = Новый Массив(); ВыводимыеОбласти.Добавить(ОбластьСтрока); Попытка ОбластьПодвалВед.Параметры.Повременно = 0; Исключение КонецПопытки; ОбластьПодвалВед.Параметры.Сдельно = 0; ОбластьПодвалВед.Параметры.Другое = 0; ОбластьПодвалВед.Параметры.ВсегоНачислено = 0; ОбластьПодвалВед.Параметры.НДФЛ = 0; ОбластьПодвалВед.Параметры.ДругоеУдержано = 0; ОбластьПодвалВед.Параметры.ВсегоУдержано = 0; ОбластьПодвалВед.Параметры.ДолгЗаОрганизацией = 0; ОбластьПодвалВед.Параметры.ДолгЗаРаботником = 0; ОбластьПодвалВед.Параметры.КВыплате = 0; ОбластьПодвалВед.Параметры.ДоходВНатуральнойФорме = 0; ВыводитьПодразделение = ТипЗнч(Подразделение) = Тип("СправочникСсылка.ПодразделенияОрганизаций"); // Разделитель строки для следующей организации Если НомерОрганизации > 1 Тогда Результат.ВывестиГоризонтальныйРазделительСтраниц() КонецЕсли; ////ОбластьШапкаДокумента.Параметры.КодПоОКПО = ВыборкаПоОрганизациям.ОрганизацияКодПоОКПО; //ОбластьШапкаДокумента.Параметры.Организация = СокрЛП(ВыборкаПоОрганизациям.ОрганизацияПредставление); //ОбластьШапкаДокумента.Параметры.ОтчетныйПериодС = НачалоМесяца(ВыборкаПоОрганизациям.ПериодРегистрации); //ОбластьШапкаДокумента.Параметры.ОтчетныйПериодПо = КонецМесяца(ВыборкаПоОрганизациям.ПериодРегистрации); //ОбластьШапкаДокумента.Параметры.ДатаД = ОбщегоНазначенияЗК.ПолучитьРабочуюДату(); //Результат.Вывести(ОбластьШапкаДокумента); //Результат.ВывестиГоризонтальныйРазделительСтраниц(); Результат.Вывести(ОбластьШапка); НомерПП = 1; ВыборкаПоФЛ = ВыборкаПоОрганизациям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ВсегоСтрокДокумента = ВыборкаПоФЛ.Количество(); // всего количество физлиц в данной ведомости Пока ВыборкаПоФЛ.Следующий() Цикл ОбластьСтрока.Параметры.Повременно = 0; ОбластьСтрока.Параметры.Сдельно = 0; ОбластьСтрока.Параметры.Другое = 0; ОбластьСтрока.Параметры.НДФЛ = 0; ОбластьСтрока.Параметры.ВсегоНачислено = 0; ОбластьСтрока.Параметры.ДругоеУдержано = 0; ОбластьСтрока.Параметры.ВсегоУдержано = 0; ОбластьСтрока.Параметры.ДолгЗаОрганизацией = 0; ОбластьСтрока.Параметры.ДолгЗаРаботником = 0; ОбластьСтрока.Параметры.КВыплате = 0; ОбластьСтрока.Параметры.ОтработаноДнейЧасовПраздничные = 0; ОбластьСтрока.Параметры.ОтработаноДнейЧасов = 0; ОбластьСтрока.Параметры.ДоходВНатуральнойФорме = 0; ОтработаноДней = 0; ОтработаноЧасов = 0; Выборка = ВыборкаПоФЛ.Выбрать(); Пока Выборка.Следующий() Цикл Если ВыводитьПодразделение Тогда ВыводитьПодразделение = Не ВыводитьПодразделение; Результат.Область(Результат.ВысотаТаблицы - 11,1).Текст = Подразделение; КонецЕсли; // тарифная ставка Если Выборка.ИспользуютсяНачисленияВВалюте тогда Если (Выборка.Курс = NULL или Выборка.Кратность = NULL) и РеглВалюта <> Выборка.ВалютаОклада и Выборка.ВалютаОклада <> Справочники.Валюты.ПустаяСсылка() тогда ОписаниеТарифнаяСтавка = "Не задан курс валюты."; ИначеЕсли (Выборка.Курс = NULL или Выборка.Кратность = NULL) и (РеглВалюта = Выборка.ВалютаОклада или Выборка.ВалютаОклада = Справочники.Валюты.ПустаяСсылка()) тогда ОписаниеТарифнаяСтавка = Формат(Выборка.ТарифнаяСтавка,"ЧЦ=15; ЧДЦ=2; ЧН=' '; ЧГ=0"); ИначеЕсли ТипЗнч(Выборка.ТарифнаяСтавка) = Тип("Строка") тогда ОписаниеТарифнаяСтавка = Выборка.ТарифнаяСтавка; Иначе ТарифнаяСтавка = Выборка.ТарифнаяСтавка * Выборка.Курс / Выборка.Кратность; ОписаниеТарифнаяСтавка = Формат(ТарифнаяСтавка,"ЧЦ=15; ЧДЦ=2; ЧН=' '; ЧГ=0"); КонецЕсли; Иначе ОписаниеТарифнаяСтавка = Формат(Выборка.ТарифнаяСтавка,"ЧЦ=15; ЧДЦ=2; ЧН=' '; ЧГ=0"); КонецЕсли; ОбластьСтрока.Параметры.ТарифнаяСтавка = ОписаниеТарифнаяСтавка; ОбластьСтрока.Параметры.ТабельныйНомер = Выборка.ТабельныйНомер; ОбластьСтрока.Параметры.Должность = Выборка.Должность; Если Выборка.Группа = "Всего начислено" Тогда Если Выборка.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПраздничныхИВыходных Тогда Если НЕ ЗначениеЗаполнено(ОбластьСтрока.Параметры.ОтработаноДнейЧасовПраздничные) Тогда ОбластьСтрока.Параметры.ОтработаноДнейЧасовПраздничные = Выборка.ОтработаноДней; Если ЗначениеЗаполнено(Выборка.ОтработаноЧасов) Тогда ОбластьСтрока.Параметры.ОтработаноДнейЧасовПраздничные = "" + Выборка.ОтработаноДней + " (" + Выборка.ОтработаноЧасов + ")" КонецЕсли; КонецЕсли; Иначе ОтработаноДней = ОтработаноДней + ?(Выборка.ОтработаноДней = NULL, 0, Выборка.ОтработаноДней); ОбластьСтрока.Параметры.ОтработаноДнейЧасов = ОтработаноДней; Если ЗначениеЗаполнено(Выборка.ОтработаноЧасов) Тогда ОтработаноЧасов = ОтработаноЧасов + Выборка.ОтработаноЧасов; КонецЕсли; Если ЗначениеЗаполнено(ОтработаноЧасов) Тогда ОбластьСтрока.Параметры.ОтработаноДнейЧасов = "" + ОтработаноДней + " (" + ОтработаноЧасов + ")" КонецЕсли; КонецЕсли; Если Выборка.ЯвляетсяДоходомВНатуральнойФорме Тогда ОбластьСтрока.Параметры.ДоходВНатуральнойФорме = ОбластьСтрока.Параметры.ДоходВНатуральнойФорме + Выборка.Результат; //ОбластьПодвалСтр.Параметры.ДоходВНатуральнойФорме = ОбластьПодвалСтр.Параметры.ДоходВНатуральнойФорме + Выборка.Результат; ОбластьПодвалВед.Параметры.ДоходВНатуральнойФорме = ОбластьПодвалВед.Параметры.ДоходВНатуральнойФорме + Выборка.Результат; ИначеЕсли Выборка.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням ИЛИ Выборка.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам ИЛИ Выборка.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке ИЛИ Выборка.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ПоДневнойТарифнойСтавке Тогда ОбластьСтрока.Параметры.Повременно = ОбластьСтрока.Параметры.Повременно + Выборка.Результат; // подсчет итогов по странице и ведомости //ОбластьПодвалСтр.Параметры.Повременно = ОбластьПодвалСтр.Параметры.Повременно + Выборка.Результат; ОбластьПодвалВед.Параметры.Повременно = ОбластьПодвалВед.Параметры.Повременно + Выборка.Результат; ИначеЕсли Выборка.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.СдельныйЗаработок Тогда ОбластьСтрока.Параметры.Сдельно = ОбластьСтрока.Параметры.Сдельно + Выборка.Результат; //ОбластьПодвалСтр.Параметры.Сдельно = ОбластьПодвалСтр.Параметры.Сдельно + Выборка.Результат; ОбластьПодвалВед.Параметры.Сдельно = ОбластьПодвалВед.Параметры.Сдельно + Выборка.Результат; Иначе ОбластьСтрока.Параметры.Другое = ОбластьСтрока.Параметры.Другое + Выборка.Результат; //ОбластьПодвалСтр.Параметры.Другое = ОбластьПодвалСтр.Параметры.Другое + Выборка.Результат; ОбластьПодвалВед.Параметры.Другое = ОбластьПодвалВед.Параметры.Другое + Выборка.Результат; КонецЕсли; Если Не Выборка.ЯвляетсяДоходомВНатуральнойФорме тогда ОбластьСтрока.Параметры.ВсегоНачислено = ОбластьСтрока.Параметры.ВсегоНачислено + Выборка.Результат; //ОбластьПодвалСтр.Параметры.ВсегоНачислено = ОбластьПодвалСтр.Параметры.ВсегоНачислено + Выборка.Результат; ОбластьПодвалВед.Параметры.ВсегоНачислено = ОбластьПодвалВед.Параметры.ВсегоНачислено + Выборка.Результат; КонецЕсли; ИначеЕсли Выборка.Группа = "Всего удержано" Тогда Если Выборка.ВидРасчета = "НДФЛ" Тогда ОбластьСтрока.Параметры.НДФЛ = ОбластьСтрока.Параметры.НДФЛ + Выборка.Результат; //ОбластьПодвалСтр.Параметры.НДФЛ = ОбластьПодвалСтр.Параметры.НДФЛ + Выборка.Результат; ОбластьПодвалВед.Параметры.НДФЛ = ОбластьПодвалВед.Параметры.НДФЛ + Выборка.Результат; Иначе ОбластьСтрока.Параметры.ДругоеУдержано = ОбластьСтрока.Параметры.ДругоеУдержано + Выборка.Результат; //ОбластьПодвалСтр.Параметры.ДругоеУдержано = ОбластьПодвалСтр.Параметры.ДругоеУдержано + Выборка.Результат; ОбластьПодвалВед.Параметры.ДругоеУдержано = ОбластьПодвалВед.Параметры.ДругоеУдержано + Выборка.Результат; КонецЕсли; //ОбластьПодвалСтр.Параметры.ВсегоУдержано = ОбластьПодвалСтр.Параметры.ВсегоУдержано + Выборка.Результат; ОбластьПодвалВед.Параметры.ВсегоУдержано = ОбластьПодвалВед.Параметры.ВсегоУдержано + Выборка.Результат; ОбластьСтрока.Параметры.ВсегоУдержано = ОбластьСтрока.Параметры.ВсегоУдержано + Выборка.Результат; ИначеЕсли Выборка.Группа = "Я" Тогда // Конечное сальдо Если Выборка.Результат - (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано) > 0 Тогда ОбластьСтрока.Параметры.ДолгЗаОрганизацией = ОбластьСтрока.Параметры.ДолгЗаОрганизацией + Выборка.Результат - (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано); //ОбластьПодвалСтр.Параметры.ДолгЗаОрганизацией = ОбластьПодвалСтр.Параметры.ДолгЗаОрганизацией + Выборка.Результат - (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано); ОбластьПодвалВед.Параметры.ДолгЗаОрганизацией = ОбластьПодвалВед.Параметры.ДолгЗаОрганизацией + Выборка.Результат - (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано); Иначе ОбластьСтрока.Параметры.ДолгЗаРаботником = ОбластьСтрока.Параметры.ДолгЗаРаботником - (Выборка.Результат - (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано)); //ОбластьПодвалСтр.Параметры.ДолгЗаРаботником = ОбластьПодвалСтр.Параметры.ДолгЗаРаботником - (Выборка.Результат - (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано)); ОбластьПодвалВед.Параметры.ДолгЗаРаботником = ОбластьПодвалВед.Параметры.ДолгЗаРаботником - (Выборка.Результат - (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано)); КонецЕсли; КонецЕсли; КонецЦикла; ОбластьСтрока.Параметры.НомерПП = НомерПП; Если ВыборкаПоФЛ.ФИО = NULL Тогда ОбластьСтрока.Параметры.ФизЛицо = ОбщегоНазначения.ФамилияИнициалыФизЛица(ВыборкаПоФЛ.ФизЛицоНаименование); Иначе ОбластьСтрока.Параметры.ФизЛицо = ВыборкаПоФЛ.ФИО; КонецЕсли; //--- imp RSS (Было) // ОбластьСтрока.Параметры.КВыплате = ОбластьСтрока.Параметры.КВыплате + ?((ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано) > 0, (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано), 0); // //ОбластьПодвалСтр.Параметры.КВыплате = ОбластьПодвалСтр.Параметры.КВыплате + ?((ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано) > 0, (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано), 0); // ОбластьПодвалВед.Параметры.КВыплате = ОбластьПодвалВед.Параметры.КВыплате + ?((ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано) > 0, (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано), 0); //--- imp RSS (Было конец) //--- imp RSS (стало) Если НЕ СУчётомУдержаний Тогда ОбластьСтрока.Параметры.КВыплате = ОбластьСтрока.Параметры.КВыплате + ?((ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.НДФЛ) > 0, (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.НДФЛ), 0); //ОбластьПодвалСтр.Параметры.КВыплате = ОбластьПодвалСтр.Параметры.КВыплате + ?((ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано) > 0, (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано), 0); ОбластьПодвалВед.Параметры.КВыплате = ОбластьПодвалВед.Параметры.КВыплате + ?((ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.НДФЛ) > 0, (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.НДФЛ), 0); Иначе ОбластьСтрока.Параметры.КВыплате = ОбластьСтрока.Параметры.КВыплате + ?((ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано) > 0, (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано), 0); //ОбластьПодвалСтр.Параметры.КВыплате = ОбластьПодвалСтр.Параметры.КВыплате + ?((ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано) > 0, (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано), 0); ОбластьПодвалВед.Параметры.КВыплате = ОбластьПодвалВед.Параметры.КВыплате + ?((ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано) > 0, (ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано), 0); КонецЕсли; //--- imp RSS (стало конец) // Проверим, уместится ли строка на странице или надо открывать новую страницу ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(Результат, ВыводимыеОбласти); Если Не ВывестиПодвалЛиста и НомерПП = ВсегоСтрокДокумента Тогда //все строки отчета перебрали, они все еще умещаются на странице ВыводимыеОбласти.Добавить(ОбластьПодвалВед); ВыводимыеОбласти.Добавить(ОбластьПодвал); // умещаются ли теперь, вместе подвалом: ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(Результат, ВыводимыеОбласти); КонецЕсли; Если ВывестиПодвалЛиста Тогда //ОбластьПодвалСтр.Параметры.Повременно = ОбластьПодвалСтр.Параметры.Повременно - ОбластьСтрока.Параметры.Повременно; //ОбластьПодвалСтр.Параметры.Сдельно = ОбластьПодвалСтр.Параметры.Сдельно - ОбластьСтрока.Параметры.Сдельно; //ОбластьПодвалСтр.Параметры.Другое = ОбластьПодвалСтр.Параметры.Другое - ОбластьСтрока.Параметры.Другое; //ОбластьПодвалСтр.Параметры.ВсегоНачислено = ОбластьПодвалСтр.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоНачислено; //ОбластьПодвалСтр.Параметры.НДФЛ = ОбластьПодвалСтр.Параметры.НДФЛ - ОбластьСтрока.Параметры.НДФЛ; //ОбластьПодвалСтр.Параметры.ДругоеУдержано = ОбластьПодвалСтр.Параметры.ДругоеУдержано - ОбластьСтрока.Параметры.ДругоеУдержано; //ОбластьПодвалСтр.Параметры.ВсегоУдержано = ОбластьПодвалСтр.Параметры.ВсегоУдержано - ОбластьСтрока.Параметры.ВсегоУдержано; //ОбластьПодвалСтр.Параметры.ДолгЗаОрганизацией = ОбластьПодвалСтр.Параметры.ДолгЗаОрганизацией - ОбластьСтрока.Параметры.ДолгЗаОрганизацией; //ОбластьПодвалСтр.Параметры.ДолгЗаРаботником = ОбластьПодвалСтр.Параметры.ДолгЗаРаботником - ОбластьСтрока.Параметры.ДолгЗаРаботником; //ОбластьПодвалСтр.Параметры.КВыплате = ОбластьПодвалСтр.Параметры.КВыплате - ОбластьСтрока.Параметры.КВыплате; //ОбластьПодвалСтр.Параметры.ДоходВНатуральнойФорме = ОбластьПодвалСтр.Параметры.ДоходВНатуральнойФорме - ОбластьСтрока.Параметры.ДоходВНатуральнойФорме; // //Результат.Вывести(ОбластьПодвалСтр); //// обнулим итоги по странице //ОбластьПодвалСтр.Параметры.Повременно = ОбластьСтрока.Параметры.Повременно; //ОбластьПодвалСтр.Параметры.Сдельно = ОбластьСтрока.Параметры.Сдельно; //ОбластьПодвалСтр.Параметры.Другое = ОбластьСтрока.Параметры.Другое; //ОбластьПодвалСтр.Параметры.ВсегоНачислено = ОбластьСтрока.Параметры.ВсегоНачислено; //ОбластьПодвалСтр.Параметры.НДФЛ = ОбластьСтрока.Параметры.НДФЛ; //ОбластьПодвалСтр.Параметры.ДругоеУдержано = ОбластьСтрока.Параметры.ДругоеУдержано; //ОбластьПодвалСтр.Параметры.ВсегоУдержано = ОбластьСтрока.Параметры.ВсегоУдержано; //ОбластьПодвалСтр.Параметры.ДолгЗаОрганизацией = ОбластьСтрока.Параметры.ДолгЗаОрганизацией; //ОбластьПодвалСтр.Параметры.ДолгЗаРаботником = ОбластьСтрока.Параметры.ДолгЗаРаботником; //ОбластьПодвалСтр.Параметры.КВыплате = ОбластьСтрока.Параметры.КВыплате; //ОбластьПодвалСтр.Параметры.ДоходВНатуральнойФорме = ОбластьСтрока.Параметры.ДоходВНатуральнойФорме; // //Результат.ВывестиГоризонтальныйРазделительСтраниц(); //Результат.Вывести(ОбластьШапка); КонецЕсли; #Если НЕ ВнешнееСоединение Тогда //--- imp Если ВФайл Тогда СуммаБезНДФЛНПП = СокрЛП(Формат(ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.НДФЛ, "ЧДЦ=2; ЧРД='.'")); НДФЛНПП = СокрЛП(Формат(ОбластьСтрока.Параметры.НДФЛ, "ЧДЦ=2; ЧРД='.'")); СуммаБезНДФЛ = ""; НДФЛ = ""; //--- imp RSS (начало) СуммаСУчетомУдержанийНПП = СокрЛП(Формат(ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.ВсегоУдержано, "ЧДЦ=2; ЧРД='.'")); ВсегоУдерженоНПП = СокрЛП(Формат(ОбластьСтрока.Параметры.ВсегоУдержано, "ЧДЦ=2; ЧРД='.'")); СуммаСУчетомУдержаний = ""; ВсегоУдержено = ""; //--- imp RSS (конец) Если Ложь Тогда //--- imp RSS (Было) //Пока СтрДлина(СуммаБезНДФЛНПП) <> 0 Цикл // // Если Лев(СуммаБезНДФЛНПП, 1) <> Символы.НПП Тогда // СуммаБезНДФЛ = СуммаБезНДФЛ + Лев(СуммаБезНДФЛНПП, 1); // КонецЕсли; // // СуммаБезНДФЛНПП = Прав(СуммаБезНДФЛНПП, СтрДлина(СуммаБезНДФЛНПП)-1); //КонецЦикла; // //Пока СтрДлина(НДФЛНПП) <> 0 Цикл // // Если Лев(НДФЛНПП, 1) <> Символы.НПП Тогда // НДФЛ = НДФЛ + Лев(НДФЛНПП, 1) // КонецЕсли; // // НДФЛНПП = Прав(НДФЛНПП, СтрДлина(НДФЛНПП)-1); // //КонецЦикла; //_Стр = """" + СокрЛП(ВыборкаПоФЛ.ФизЛицоНаименование) + """,""" + Формат(НачалоПериода, "ДФ=дд.ММ.гг") + //""",""" + Формат(КонецПериода, "ДФ=дд.ММ.гг") + """," + СуммаБезНДФЛ + "," + //НДФЛ; // //Если ВерсияФорматаФайла = "1" Тогда // // // Не меняем строку файла // //ИначеЕсли ВерсияФорматаФайла = "2" Тогда // // //"Абдувахапов Омадбек Фуркатжонович","01.04.18","30.04.18",19860.58,2968.00 // Формат = 1 // //"Абдурахимов Оятилло Абдужаббарович" "01,04,18" "30,04,18" 24534,00 3666,00 // Формат = 2 // // _Стр = СтрЗаменить(_Стр, ",", Символы.Таб); // _Стр = СтрЗаменить(_Стр, ".", ","); // //КонецЕсли; // //База.ДобавитьСтроку(_Стр); // //ФайлСчетчик = ФайлСчетчик + 1; //ФайлОбщСуммаБезНДФЛ = ФайлОбщСуммаБезНДФЛ + ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.НДФЛ; //ФайлОбщСуммаНДФЛ = ФайлОбщСуммаНДФЛ + ОбластьСтрока.Параметры.НДФЛ; КонецЕсли;//--- imp RSS (Было конец) Если НЕ СУчётомУдержаний Тогда //--- imp RSS (Стало) Пока СтрДлина(СуммаБезНДФЛНПП) <> 0 Цикл Если Лев(СуммаБезНДФЛНПП, 1) <> Символы.НПП Тогда СуммаБезНДФЛ = СуммаБезНДФЛ + Лев(СуммаБезНДФЛНПП, 1); КонецЕсли; СуммаБезНДФЛНПП = Прав(СуммаБезНДФЛНПП, СтрДлина(СуммаБезНДФЛНПП)-1); КонецЦикла; Пока СтрДлина(НДФЛНПП) <> 0 Цикл Если Лев(НДФЛНПП, 1) <> Символы.НПП Тогда НДФЛ = НДФЛ + Лев(НДФЛНПП, 1) КонецЕсли; НДФЛНПП = Прав(НДФЛНПП, СтрДлина(НДФЛНПП)-1); КонецЦикла; _Стр = """" + СокрЛП(ВыборкаПоФЛ.ФизЛицоНаименование) + """,""" + Формат(НачалоПериода, "ДФ=дд.ММ.гг") + """,""" + Формат(КонецПериода, "ДФ=дд.ММ.гг") + """," + СуммаБезНДФЛ + "," + НДФЛ; Если ВерсияФорматаФайла = "1" Тогда // Не меняем строку файла ИначеЕсли ВерсияФорматаФайла = "2" Тогда //"Абдувахапов Омадбек Фуркатжонович","01.04.18","30.04.18",19860.58,2968.00 // Формат = 1 //"Абдурахимов Оятилло Абдужаббарович" "01,04,18" "30,04,18" 24534,00 3666,00 // Формат = 2 _Стр = СтрЗаменить(_Стр, ",", Символы.Таб); _Стр = СтрЗаменить(_Стр, ".", ","); КонецЕсли; База.ДобавитьСтроку(_Стр); ФайлСчетчик = ФайлСчетчик + 1; ФайлОбщСуммаБезНДФЛ = ФайлОбщСуммаБезНДФЛ + ОбластьСтрока.Параметры.ВсегоНачислено - ОбластьСтрока.Параметры.НДФЛ; ФайлОбщСуммаНДФЛ = ФайлОбщСуммаНДФЛ + ОбластьСтрока.Параметры.НДФЛ; Иначе Пока СтрДлина(СуммаСУчетомУдержанийНПП) <> 0 Цикл Е |
|||
4
Роспатнюк Сергей Сер
29.03.19
✎
10:36
|
(2) а разве дело в том что в функции сформировать отчет, я подумал в том что стартуя из другой базы я должен еще что то для скд сделать так как по кнопке в начале проходим этот код
СостояниеМодифицированности = Модифицированность; Если ПанельНастроекНарисована <> Истина Тогда ОбновлениеОтображения(); КонецЕсли; ТиповыеОтчеты.ЗагрузитьВРеквизитЗначенияНастроекПанелиПользователя(ЭтотОбъект, ЭтаФорма); ПараметрыПанели = ТиповыеОтчеты.ПолучитьПараметрыПанелиПользователяОбъекта(ОтчетОбъект); ЗначенияНастроек = ТиповыеОтчеты.ПолучитьЗначенияНастроекПанелиПользователяОбъекта(ОтчетОбъект); Отказ = ложь; ТиповыеОтчеты.ПроверитьЗначенияПараметров(ЗначенияНастроек, ПараметрыПанели, Отказ); Если Отказ тогда Возврат; КонецЕсли; СформироватьОтчет(ЭлементыФормы.Результат, ДанныеРасшифровки,,ВФайл); |
|||
5
Rovan
гуру
29.03.19
✎
10:50
|
(0) через СОМ можно передавать явно только примитивные типы - стока, число, дата, булево, двоичныеданные.
Все остальное это ссылка на объект в той базе. |
|||
6
Роспатнюк Сергей Сер
29.03.19
✎
10:54
|
(5) я в курсе этого, именно по этому и передаю только НачалоПериода КонецПериода наименование организации и уже в этой базе нахожу её
|
|||
7
Провинциальный 1сник
29.03.19
✎
11:11
|
(5) Даже хуже. Число в COM и число в 1с - разные типы, между которыми производятся преобразования с потерей точности. Так что, если обращаешься к числу в COM-базе - делать это надо только через обертку в строку.
|
|||
8
Роспатнюк Сергей Сер
29.03.19
✎
11:16
|
(7) не понял что я не так передаю 1й параметр это тип дата 2й тоже 3й строка, что же я не так передаю ?
|
|||
9
Роспатнюк Сергей Сер
29.03.19
✎
11:18
|
на возврат хочу ТЗ с примитивными типами только до возврата дело не доходит СКД чего то от меня хочет а чего не понятно.
|
|||
10
breezee
29.03.19
✎
11:19
|
Почему бы не скоммунздить текст запроса и не выполнять его по com(com, кстати, технология старая, используйте веб сервис)
|
|||
11
Роспатнюк Сергей Сер
29.03.19
✎
11:25
|
(10) вы предлагаете в начале скопировать СКД запрос > 1000 строк выполнить его через com потом скопировать 2й запрос > 1500 строк
потом покурить типой код и разобраться в этих выборка выборка выборка выборка и отработать в базе источник я правильно понял ? |
|||
12
Роспатнюк Сергей Сер
29.03.19
✎
11:32
|
(10) используйте веб сервис а можно по точнее
|
|||
13
aleks_default
29.03.19
✎
11:42
|
У тебя проблемы с выполнением отчета в неинтерактивном режиме. Либо какие-то параметры в отчет непередаются, либо там вообще текст запроса косячный (о чем говорит синтаксическая ошибка). И вообще выполняется другой отчет при выполнении первого. Разберись сначала как запустить отчет в неинтерактивном (без открытия формы) режиме в одной базе и чтобы он выполнялся без ошибок, а потом уже будешь пытаться сделать это по Com.
|
|||
14
Роспатнюк Сергей Сер
29.03.19
✎
11:44
|
(13) спасибо так и поступим
|
|||
15
Роспатнюк Сергей Сер
29.03.19
✎
11:56
|
(13) а примеров или ссылок на выполнение такой задачи у вас нет случаем ? что то в Яндексе скудно на эту тему
|
|||
16
aleks_default
29.03.19
✎
12:01
|
Да на инфостарте вариантов полно должно быть. Ты не далеко не первый. Что-то подобное я лет десять назад реализовывал, так что сейчас ничего не осталось. Да и технологии устарели.
|
|||
17
Роспатнюк Сергей Сер
29.03.19
✎
12:04
|
(16) ясн, еще раз спасибо будем копать ИС
|
|||
18
Роспатнюк Сергей Сер
29.03.19
✎
16:21
|
(17) В итоге получился гибрид немного копипаста а именно 2 СКД запроса которые немного пришлось подправить и перенести в базу источник, далее подключение чере COM в функцию ВнешнееПодключение с передачей результатов запроса ну и уже в приемнике формируется Табличный Документ преобразовывается в ТЗ и на возврат. Всем кто помогал спс.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |