|
Выгрузка бюджетной зарплаты на пластиковые карты сбербанка | ☑ | ||
---|---|---|---|---|
0
тоа
01.02.12
✎
09:31
|
Ребят помогите плиз поправить код для выгрузки из Зарплата и кадры бюджетного учреждения 8.2 в дбф
// Сформировать файл выгрузки Процедура КнопкаВыполнитьНажатие(Кнопка) ДБФ = Новый XBase; ДБФ.Кодировка = КодировкаXBase.OEM; ДБФ.поля.Добавить("A","S",33); ДБФ.поля.Добавить("B","S",30); ДБФ.поля.Добавить("C","S",30); ДБФ.поля.Добавить("D","S",30); ДБФ.поля.Добавить("E","S",30); ДБФ.поля.Добавить("F","S",30); ДБФ.поля.Добавить("G","S",30); ИмяФайла="f"+Формат(НомерОтделения, "ЧЦ=4; ЧВН=; ЧГ=0")+ Формат(НомерВыгрузки, "ЧЦ=2; ЧВН=; ЧГ=0")+".dbf"; ДБФ.СоздатьФайл(ПутьКФайлу+"\f"+Формат(НомерОтделения, "ЧЦ=4; ЧВН=; ЧГ=0")+ Формат(НомерВыгрузки, "ЧЦ=2; ЧВН=; ЧГ=0")+".dbf",); //1 ДБФ.Добавить(); ДБФ.УстановитьЗначениеПоля("A",СокрЛП(НомерОтделения)+","+СокрЛП(НомерФилиала)); ДБФ.Записать(); //2 ДБФ.Добавить(); ДБФ.УстановитьЗначениеПоля("A","К платежному поручению №"); ДБФ.УстановитьЗначениеПоля("B",Строка(НомерПлатежногоПоручения)); ДБФ.УстановитьЗначениеПоля("C","от"); ДБФ.УстановитьЗначениеПоля("D",ДатаВыгрузки); ДБФ.Записать(); //3 ДБФ.Добавить(); ДБФ.УстановитьЗначениеПоля("A","Зачисление"); ДБФ.УстановитьЗначениеПоля("B",Зачисление); ДБФ.УстановитьЗначениеПоля("C","810"); ДБФ.Записать(); //4 ДБФ.Добавить(); ДБФ.УстановитьЗначениеПоля("A","ОГРН,НАИМЕНОВАНИЕ,№ БАНК.СЧЕТА"); ДБФ.УстановитьЗначениеПоля("B",Организация.ОГРН+", "+Организация.Наименование); ДБФ.УстановитьЗначениеПоля("C",Организация.ОсновнойБанковскийСчет.НомерСчета); ДБФ.Записать(); //5 ДБФ.Добавить(); ДБФ.УстановитьЗначениеПоля("A","ПО ДОГОВОРУ: "); ДБФ.УстановитьЗначениеПоля("B",Договор); ДБФ.УстановитьЗначениеПоля("C","от "); ДБФ.УстановитьЗначениеПоля("D",ДатаДоговора); ДБФ.Записать(); //6 ДБФ.Добавить(); ДБФ.УстановитьЗначениеПоля("A","Номер п/п"); ДБФ.УстановитьЗначениеПоля("B","Номер счета"); ДБФ.УстановитьЗначениеПоля("C","Фамилия"); ДБФ.УстановитьЗначениеПоля("D","Имя"); ДБФ.УстановитьЗначениеПоля("E","Отчество"); ДБФ.УстановитьЗначениеПоля("F","Сумма"); ДБФ.УстановитьЗначениеПоля("G","Примечание"); ДБФ.Записать(); //ИмяФайлаK = СокрЛП(Строка(ОтделениеБанка))+СокрЛП(НомерДоговора)+СокрЛП(Строка(НомерВыгрузки))+".k"+День(ДатаВыгрузки); //ИмяФайлаS = СокрЛП(Строка(ОтделениеБанка))+СокрЛП(НомерДоговора)+СокрЛП(Строка(НомерВыгрузки))+".s"+День(ДатаВыгрузки); //ТекстK = Новый ТекстовыйДокумент; //ТекстS = Новый ТекстовыйДокумент; КоличествоЗаписей = 0; СуммаИтого = 0; Запрос = НОвый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо, | Сумма(ЗарплатаКВыплатеОрганизацийЗарплата.Сумма) как сумма, | ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета |ИЗ | Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации | ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = ЛицевыеСчетаРаботниковОрганизации.ФизЛицо |ГДЕ | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Организация = &Организация //| И ЛицевыеСчетаРаботниковОрганизации.Организация = &Организация | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка В(&СписокДокументов) | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.СпособВыплаты = &СпособВыплаты | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.ПометкаУдаления = ЛОЖЬ |СГРУППИРОВАТЬ ПО | ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо, | ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета |ИТОГИ | Сумма(Сумма) |ПО | ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("СпособВыплаты",Перечисления.СпособыВыплатыЗарплаты.ЧерезБанк); Запрос.УстановитьПараметр("СписокДокументов",ВыплатыЗаработнойПлаты.ВыгрузитьКолонку("Документ")); Результат = Запрос.Выполнить(); //ТЗ = Результат.Выгрузить(); //ТЗ.ВыбратьСтроку(); Если Результат.Пустой() Тогда Предупреждение("Нет данных! Возможно отсутствуют лицевые счета сотрудников"); Возврат; КонецЕсли; //Выборка = Результат.Выбрать(); ВыборкаОбщ = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); СуммаИтого = 0; н = 0; Пока ВыборкаОбщ.Следующий() Цикл Выборка = ВыборкаОбщ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл н = н +1; Если ПустаяСтрока(Выборка.НомерЛицевогоСчета) Тогда Сообщить("У сотрудника " + Выборка.ФизЛицо + " не указан лицевой счет", СтатусСообщения.ОченьВажное); НеФормироватьФайл = 1; КонецЕсли; Если Выборка.Сумма = 0 Тогда Сообщить("У сотрудника " + Выборка.ФизЛицо + " не указана сумма, перечисляемая на лицевой счет", СтатусСообщения.ОченьВажное); НеФормироватьФайл = 1; КонецЕсли; СуммаИтого = СуммаИтого + Выборка.Сумма; ФИО = Выборка.ФизЛицо.Наименование; Фамилия = ОбщегоНазначения.ВыделитьСлово(ФИО); Имя = ОбщегоНазначения.ВыделитьСлово(ФИО); Отчество = ОбщегоНазначения.ВыделитьСлово(ФИО); ДБФ.Добавить(); ДБФ.УстановитьЗначениеПоля("A",н); ДБФ.УстановитьЗначениеПоля("B",Выборка.НомерЛицевогоСчета); ДБФ.УстановитьЗначениеПоля("C",Фамилия); ДБФ.УстановитьЗначениеПоля("D",Имя); ДБФ.УстановитьЗначениеПоля("E",Отчество); ДБФ.УстановитьЗначениеПоля("F",Формат(Выборка.Сумма,"ЧГ=6 ;ЧРД='.'; ЧДЦ=2")); ДБФ.Записать(); //ТекстS.ДобавитьСтроку(СокрЛП(Строка(н))+"|"+СокрЛП(Строка(ОтделениеБанка))+"|"+СокрЛП(Строка(ФилиалБанка))+"|"+СокрЛП(Фамилия)+"|"+СокрЛП(Имя)+"|"+СокрЛП(Отчество)+"|"+СокрЛП(Строка(Выборка.НомерЛицевогоСчета))+"|"+СокрЛП(Строка(Формат(Выборка.сумма, "ЧЦ=8; ЧДЦ=2")))); КонецЦикла; КонецЦикла; Если НеФормироватьФайл = 1 тогда Сообщить("Файл не сформирован!", СтатусСообщения.ОченьВажное); Иначе //итог ДБФ.Добавить(); ДБФ.УстановитьЗначениеПоля("B","ИТОГО:"); ДБФ.УстановитьЗначениеПоля("F",Формат(СуммаИтого,"ЧГ=6 ;ЧРД='.'; ЧДЦ=2")); ДБФ.Записать(); //ТекстS.Записать(СокрЛП(ПутьКФайлу) + ?(Прав(СокрЛП(ПутьКФайлу) , 1) <> "\", "\", "") + ИмяФайлаS); //ТекстK.ДобавитьСтроку(""+СокрЛП(Организация.НаименованиеПолное)+"|"+СокрЛП(Строка(НомерДоговора))+"|"+СокрЛП(Строка(ОтделениеБанка))+"|"+СокрЛП(Строка(ФилиалБанка))+"|"+Строка(н)+"|"+СокрЛП(Строка(Формат(СуммаИтого,"ЧЦ=15; ЧДЦ=2")))); //ТекстK.Записать(СокрЛП(ПутьКФайлу) + ?(Прав(СокрЛП(ПутьКФайлу) , 1) <> "\", "\", "") + ИмяФайлаK); Сообщить("Формирование файла " + ИмяФайла+" завершено", СтатусСообщения.Информация); КонецЕсли; КонецПроцедуры // При начале выбора каталога выгрузки Процедура ПутьКФайлуНачалоВыбора(Элемент, СтандартнаяОбработка) Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); Если Диалог.Выбрать() Тогда ПутьКФайлу=Диалог.Каталог; КонецЕсли; КонецПроцедуры Процедура ВыплатыЗаработнойПлатыДокументПриИзменении(Элемент) Если Элемент.Значение.СпособВыплаты = Перечисления.СпособыВыплатыЗарплаты.ЧерезКассу Тогда Предупреждение("Способ выплаты через кассу. Документ "+Элемент.Значение+ " не выбран."); Элемент.Значение = Документы.ЗарплатаКВыплатеОрганизаций.ПустаяСсылка(); Возврат; КонецЕсли; КонецПроцедуры Процедура рсОргНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ФормаСчета = Справочники.БанковскиеСчета.ПолучитьФормуВыбора(, Элемент); ФормаСчета.Отбор.ВалютаДенежныхСредств.Установить(Константы.ВалютаРегламентированногоУчета.Получить()); Если НЕ Организация.Пустая() Тогда ФормаСчета.Отбор.Владелец.Установить(Организация); КонецЕсли; Если ЗначениеЗаполнено(Элемент.Значение) Тогда ФормаСчета.ПараметрТекущаяСтрока = Элемент.Значение; КонецЕсли; ФормаСчета.Открыть(); КонецПроцедуры Процедура ПриОткрытии() НомерВыгрузки = День(ТекущаяДата()); Зачисление="01"; //ОтборРегистра = Новый Структура("Настройка, Пользователь", ПланыВидовХарактеристик.НастройкиПользователей.ОсновнаяОрганизация, ПараметрыСеанса.ТекущийПользователь.Ссылка); //Организация = РегистрыСведений.НастройкиПользователей.Получить(ОтборРегистра).Значение; КонецПроцедуры Процедура ПечатьНажатие(Элемент) ТабДок = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет"); //Вывод заголовка ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьЗаголовок.Параметры.ДатаФормирования = Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy"); ОбластьЗаголовок.Параметры.Организация = Организация; ОбластьЗаголовок.Параметры.РасчетныйСчетОрганизации = РасчетныйСчетОрганизации.НомерСчета; ТабДок.Вывести(ОбластьЗаголовок); КоличествоЗаписей = 0; СуммаИтого = 0; Запрос = НОвый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо, | Сумма(ЗарплатаКВыплатеОрганизацийЗарплата.Сумма) как сумма, | ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета |ИЗ | Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации | ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = ЛицевыеСчетаРаботниковОрганизации.ФизЛицо |ГДЕ | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Организация = &Организация //| И ЛицевыеСчетаРаботниковОрганизации.Организация = &Организация | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка В(&СписокДокументов) | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.СпособВыплаты = &СпособВыплаты | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.ПометкаУдаления = ЛОЖЬ |СГРУППИРОВАТЬ ПО | ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо, | ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета |ИТОГИ | Сумма(Сумма) |ПО | ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("СпособВыплаты",Перечисления.СпособыВыплатыЗарплаты.ЧерезБанк); Запрос.УстановитьПараметр("СписокДокументов",ВыплатыЗаработнойПлаты.ВыгрузитьКолонку("Документ")); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Предупреждение("Нет данных! Возможно отсутствуют лицевые счета сотрудников"); Возврат; КонецЕсли; ВыборкаОбщ = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаВыплаты"); СуммаИтого = 0; н = 0; Пока ВыборкаОбщ.Следующий() Цикл Выборка = ВыборкаОбщ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл н = н +1; Если ПустаяСтрока(Выборка.НомерЛицевогоСчета) Тогда Сообщить("У сотрудника " + Выборка.ФизЛицо + " не указан лицевой счет", СтатусСообщения.ОченьВажное); КонецЕсли; Если Выборка.Сумма = 0 Тогда Сообщить("У сотрудника " + Выборка.ФизЛицо + " не указана сумма, перечисляемая на лицевой счет", СтатусСообщения.ОченьВажное); КонецЕсли; СуммаИтого = СуммаИтого + Выборка.Сумма; ФИО = Выборка.ФизЛицо.Наименование; ОбластьСтроки.Параметры.ФИОСотрудника = ФИО; ОбластьСтроки.Параметры.ЛицевойСчет = Выборка.НомерЛицевогоСчета; ОбластьСтроки.Параметры.Сумма = Выборка.Сумма; ОбластьСтроки.Параметры.ОБ = НомерОтделения; ОбластьСтроки.Параметры.ФОБ = НомерФилиала; ТабДок.Вывести(ОбластьСтроки); КонецЦикла; КонецЦикла; ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьПодвал.Параметры.СуммаИтого=СуммаИтого; ТабДок.Вывести(ОбластьПодвал); УниверсальныеМеханизмы.НапечататьДокумент(ТабДок,,,"Список на зачисление"); КонецПроцедуры |
|||
1
БалбесВ1с
01.02.12
✎
09:47
|
А что не работает то?
|
3 |
||
2
Alex S D
01.02.12
✎
09:48
|
ждем телепатов
|
|||
3
тоа
01.02.12
✎
09:52
|
(1) при попытке добавить документ для выгрузки появляется ошибка: Поле объекта не обнаружено (СпособВыплаты)если нажать подробно то вот:
{Форма.Форма.Форма(164)}: Поле объекта не обнаружено (СпособВыплаты) Если Элемент.Значение.СпособВыплаты = Перечисления.СпособыВыплатыЗарплаты.ЧерезКассу Тогда Вообще это выгрузка изначально для ЗУП, в ЗУП все без проблем, но нужно для бюджета |
|||
4
Diose_1c
01.02.12
✎
10:17
|
6 |
|||
5
DmiVo
01.02.12
✎
10:37
|
Посмотри отладчиком
|
|||
6
тоа
01.02.12
✎
15:06
|
(4) Нет возможности скачать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |