Добрый вечер, столкнулся с проблемой, нужно заполнить колонку "Счет" в табличном документе зависимости от типа ведомости. Их всего 2: "На счета сотрудников" и "По зарплатному проекту". На первый тип нужен Основной Банковский Счет, а на вторую Лицевой Счет. У меня же всегда выгружает банковский. Предполагаю, что ошибка где-то в запросе, но не уверен. Буду очень признателен за помощь. Заранее спасибо за ответы. Код:
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ДанныеФайла = ПолучитьДанныеФайла(ПараметрКоманды); Если ЗначениеЗаполнено(ДанныеФайла.ТекстОшибки) Тогда ОбщегоНазначенияКлиент.СообщитьПользователю(ДанныеФайла.ТекстОшибки); Возврат; КонецЕсли;
Режим = РежимДиалогаВыбораФайла.ВыборКаталога; ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытия.Каталог = ""; ДиалогОткрытия.МножественныйВыбор = Ложь; ДиалогОткрытия.Заголовок = "Выберите каталог для сохранения файла";
Если ДиалогОткрытия.Выбрать() Тогда ПутьККаталогу = ДиалогОткрытия.Каталог; ДанныеФайла.ТабличныйДокумент.Записать(ПутьККаталогу + "\" + ДанныеФайла.НомерРеестра + ".xlsx", ТипФайлаТабличногоДокумента.XLSX); Состояние("Файл успешно сохранен"); КонецЕсли; КонецПроцедуры
&НаСервере Функция ПолучитьДанныеФайла(Ведомость) ТабличныйДокумент = Новый ТабличныйДокумент;
Для Каждого ТекСтрока Из ТаблицаДанных Цикл Область = Макет.ПолучитьОбласть("Строка"); Область.Параметры.Заполнить(ТекСтрока); ДанныеФизлица = КадровыеДанныеФизическихЛиц.НайтиСтроки(Новый Структура("ФизическоеЛицо", ТекСтрока.ФизическоеЛицо));
Если ДанныеФизлица.Количество() > 0 Тогда Область.Параметры.Заполнить(ДанныеФизлица[0]); КонецЕсли;
Результат = Новый Структура; Результат.Вставить("ТекстОшибки", ?(ТаблицаДанных.Количество() = 0, "Нет данных для формирования отчета", "")); Результат.Вставить("ТабличныйДокумент", ТабличныйДокумент); Результат.Вставить("НомерРеестра", Ведомость.НомерРеестра);
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ДанныеФайла = ПолучитьДанныеФайла(ПараметрКоманды);
Если ЗначениеЗаполнено(ДанныеФайла.ТекстОшибки) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(ДанныеФайла.ТекстОшибки);
Возврат;
КонецЕсли;
Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытия.Каталог = "";
ДиалогОткрытия.МножественныйВыбор = Ложь;
ДиалогОткрытия.Заголовок = "Выберите каталог для сохранения файла";
Если ДиалогОткрытия.Выбрать() Тогда
ПутьККаталогу = ДиалогОткрытия.Каталог;
ДанныеФайла.ТабличныйДокумент.Записать(ПутьККаталогу + "\" + ДанныеФайла.НомерРеестра + ".xlsx", ТипФайлаТабличногоДокумента.XLSX);
Состояние("Файл успешно сохранен");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьДанныеФайла(Ведомость)
ТабличныйДокумент = Новый ТабличныйДокумент;
Макет=Документы.ВедомостьНаВыплатуЗарплатыВБанк.ПолучитьМакет("ВыгрузкаВПСБ");
Область=Макет.ПолучитьОбласть("Заголовок");
ТабличныйДокумент.Вывести(Область);
Запрос = Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК ФизическоеЛицо,
| СУММА(ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате) КАК КВыплате
|ИЗ
| Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата
|ГДЕ
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо
|УПОРЯДОЧИТЬ ПО
| ФизическоеЛицо
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Ссылка", Ведомость);
ТаблицаДанных = Запрос.Выполнить().Выгрузить();
КадровыеДанныеФизическихЛиц = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина, ТаблицаДанных.ВыгрузитьКолонку("ФизическоеЛицо"), "ФизическоеЛицо, ОсновнойБанковскийСчет, Фамилия, Имя, Отчество, ДокументСерия, ДокументНомер");
Для Каждого ТекСтрока Из ТаблицаДанных Цикл
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Заполнить(ТекСтрока);
ДанныеФизлица = КадровыеДанныеФизическихЛиц.НайтиСтроки(Новый Структура("ФизическоеЛицо", ТекСтрока.ФизическоеЛицо));
Если ДанныеФизлица.Количество() > 0 Тогда
Область.Параметры.Заполнить(ДанныеФизлица[0]);
КонецЕсли;
Область.Параметры.ТабельныйНомер = ТекСтрока.ФизическоеЛицо.Код;
Область.Параметры.КВыплате = Формат(ТекСтрока.КВыплате, "ЧДЦ=2; ЧРД=.; ЧГ=");
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
Результат = Новый Структура;
Результат.Вставить("ТекстОшибки", ?(ТаблицаДанных.Количество() = 0, "Нет данных для формирования отчета", ""));
Результат.Вставить("ТабличныйДокумент", ТабличныйДокумент);
Результат.Вставить("НомерРеестра", Ведомость.НомерРеестра);
Возврат Результат;
КонецФункции