Помогите разобраться с обработкой .ert !1С 7.7 ЗиК
04.02.2011
08:22
#1
"Здравствуйте уважаемые технические специалисты!
У организации существует такая обработка, которая выгружает списки сотрудников на получение зарплаты в специальный формат для отправки в банк, и распечатывает реестры, в которых расписывается директор и т.д.
Так вот, написана она была для другой организации и формирует шапку с названием другой организации и директором а вот таблицу формирует нашу на основании данных из (Журнала документов по кассе) так вот, я не могу никак найти табличную часть в конфигураторе откуда эта обработка берет шапку и все остальное, я знаю что есть некая таблица в которой уже вбиты организация и все остальное, но найти не могу...
Поэтому приходится вручную переносить табличную часть из выгруженного реестра в свой с нашей шапкой, и еще после выгрузки в файл, почему то меняет номер договора, хотя в обработке он прописан правильно, а после выгрузки ставит вместо 00000018, 00000016, я не разбираюсь в языке написания обработок,
вот собственно и обработка, посомтрите пожалуйста, спасибо.
//*******************************************
Перем ДатаПериод;
Перем Фамилия, Имя, Отчество, НомСК, НаимОрганизации, ОГРН,f,t;
Перем СуммаИтог, ФормироватьФайл;
//============================================== ============================================================ =============
Процедура ПриОткрытии() // установка параметров по умолчанию
НаимОрганизации="ООО ЮНИ";
//НаимОрганизации=СокрЛП(Константа.НазваниеОрганизации); // полное наименование
ОГРН=СокрЛП(Константа.ОГРН);
РасчетныйСчет="40702810007300000033";
ВидЗачисления="01";
Формат_DBF=1; // формат выгрузки по умолчанию 1 - для DBF, 0 - для TXT
НомДок="000001";
ДатаДок=ТекущаяДата();
НомСберк="0382";
НомСчета="408";
НаименФилиала=СокрЛП("Россошанское ОСБ");
НомФилиала="382";
Договор="00000018";
ДатаДоговора="26.11.2009";
Каталог="\\Optifood-data\Users$\ЛаринаТМ\Desktop\зарплата"; // если на дискету, тогда ЛАТИНСКАЯ буква А Буквы ТОЛЬКО ЛАТИНСКИЕ!!!!!!!!!!!!!!!!!
ФормироватьФайл=0; // не трогать!!!
Реестр = ДатаМесяц(ТекущаяДата())-1;
Дат=ДатаПериод;
ДатаРеестр = ТекущаяДата();
КонецПроцедуры
//================================ ============================================================ ===========================
Функция ФамИмОт(Объект,Фамилия="""",Имя="""",Отчество="""")
Если ТипЗначения(Объект)=2 Тогда
ФИО = глРазделить(СокрЛП(Объект),",");
Иначе
ФИО = глРазделить(СокрЛП(Объект.Наименование),",");
КонецЕсли;
ФИО = глРазложить(ФИО," ");
Фамилия = """"; Имя = """"; Отчество = """";
Если ФИО.РазмерСписка() > 0 Тогда
Фамилия = ФИО.ПолучитьЗначение(1);
Если ФИО.РазмерСписка() > 1 Тогда
Имя = ФИО.ПолучитьЗначение(2);
Если ФИО.РазмерСписка() > 2 Тогда
// а вот отчество бывает и не из одного слова
Для Сч = 3 По ФИО.РазмерСписка() Цикл
Отчество = Отчество + ФИО.ПолучитьЗначение(Сч) + " ";
КонецЦикла;
Если ПустоеЗНачение(Отчество) = 0 Тогда
Отчество = Лев(Отчество,СтрДлина(Отчество)-1);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Фамилия+Симв(124)+?(ПустоеЗначение(Имя)=1," ",СокрЛП(Имя))+Симв(124)+?(ПустоеЗначение(Отчество)=1," ",СокрЛП(Отчество))+Симв(124);
КонецФункции
//====================================== ============================================================ =====================
Процедура ВыборКаталога(Каталог)
Кат = "С:\";
Если ФС.ВыбратьКаталог(Кат, "Выберите каталог")=1 Тогда
Каталог = Кат;
КонецЕсли;
КонецПроцедуры
//==================================== ============================================================ =======================
Процедура ПриНачалеВыбораЗначения(Поле, Фл)
Если Поле = "Каталог" Тогда
ВыборКаталога(Каталог);
КонецЕсли;
КонецПроцедуры
//==================================== ============================================================ =======================
Процедура ПриВыбореДок()
СуммаИтог =0;
ТабСотр.Очистить();
ТабСотр.НоваяКолонка("Сотрудник","Справочник.Сотрудники") ;
ТабСотр.НоваяКолонка("Сумма","Ч",10,2);
ТекущийДок=ДокВып;
ТекущийДок.ВыбратьСтроки();
Пока ТекущийДок.ПолучитьСтроку()=1 Цикл
Если РСБ =1 Тогда
Если СокрЛП(НомСчета)= СокрЛП(Лев(ТекущийДок.Сотрудник.НомерЗарплатногоСчета,3)) Тогда
Если СокрЛП(Лев(ТекущийДок.Сотрудник.ОтделениеБанка,4)) = "1402" Тогда
ТабСотр.НоваяСтрока();
ТабСотр.Сотрудник=ТекущийДок.Сотрудник;
ТабСотр.Сумма=ТекущийДок.Сумма;
КонецЕсли;
КонецЕсли;
Иначе
Если СокрЛП(НомСчета)= СокрЛП(Лев(ТекущийДок.Сотрудник.НомерЗарплатногоСчета,3)) Тогда
Если СокрЛП(Лев(ТекущийДок.Сотрудник.ОтделениеБанка,4)) <> "1402" Тогда
ТабСотр.НоваяСтрока();
ТабСотр.Сотрудник=ТекущийДок.Сотрудник;
ТабСотр.Сумма=ТекущийДок.Сумма;
КонецЕсли;
КонецЕсли;
КонецЕсли;
СуммаИтог = СуммаИтог + ТабСотр.Сумма;
КонецЦикла;
ДатаПериод=ТекущийДок.ДатаПериода;
Если СуммаИтог=0 Тогда
Предупреждение("В выбранной Ведомости нет сотрудников, у которых Номер счета начинается на "+Лев(НомСчета,3));
Возврат;
Иначе
ФормироватьФайл=1;
КонецЕсли;
КонецПроцедуры
//================================ ============================================================ ===========================
Процедура Печать()
Дат=ДатаПериод;
Таб=СоздатьОбъект("Таблица") ;
Таб.ИсходнаяТаблица("Таблица");
Таб.ВывестиСекцию("Шапка");
НомерСТрокиНаСтранице=10;
КолСтрок=ТабСотр.КоличествоСтрок();
СтрокНаСтранице=30;
СтрокНа1Странице=35;
//Страниц=КолСтрок/СтрокНаСтранице;
НомЛист=1;
СтрокПодвал=11;
НомПП=0;
СуммаИтог=0;
СуммаЛист=0;
//Страница=1;
Если (КолСтрок>=18) и (КолСтрок<25)Тогда
СтрокНа1Странице=28;
КонецЕсли;
ТабСотр.ВыбратьСтроки();
Пока ТабСотр.ПолучитьСтроку()=1 Цикл
Если НомЛист<>1 Тогда
Если НомерСтрокиНаСтранице>=СтрокНаСтранице Тогда
Таб.ВывестиСекцию("ИтогЛист");
Таб.ВывестиСекцию("Лист");
Таб.НоваяСтраница();
СуммаЛист=0;
НомЛист=НомЛист+1;
//Страница=Страница+1;
НомерСтрокиНаСтранице=2;
Таб.ВывестиСекцию("ШапкаМал");
КонецЕсли;
ИначеЕсли НомЛист=1 Тогда
Если НомерСтрокиНаСтранице=СтрокНа1Странице Тогда
Таб.ВывестиСекцию("ИтогЛист");
Таб.ВывестиСекцию("Лист");
Таб.НоваяСтраница();
СуммаЛист=0;
НомЛист=НомЛист+1;
//Страница=Страница+1;
НомерСтрокиНаСтранице=2;
Таб.ВывестиСекцию("ШапкаМал");
КонецЕсли;
КонецЕсли;
НомПП=НомПП+1;
СуммаИтог=СуммаИтог+ТабСотр.Сумма;
СуммаЛист=СуммаЛист+ТабСотр.Сумма;
Таб.ВывестиСекцию("Строка");
НомерСтрокиНаСтранице=НомерСтрокиНаСтранице+1;
//Если (НомерСтрокиНаСтранице>=СтрокНаСтранице) или(НомПП=КолСтрок) Тогда
// Если НомЛист>1 Тогда
// Таб.ВывестиСекцию("ИтогЛист");
// КонецЕсли;
//КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("ИтогЛист");
Таб.ВывестиСекцию("Итог");
Таб.ВывестиСекцию("Подвал");
Таб.ВывестиСекцию("Лист");
Таб.Показать();
КонецПроцедуры
Процедура Печать1()
Дат=ДатаПериод;
Таб=СоздатьОбъект("Таблица") ;
Таб.ИсходнаяТаблица("Таблица1");
ТабСотр.ВыбратьСтроки();
Пока ТабСотр.ПолучитьСтроку()=1 Цикл
Если СокрЛП(НомСчета)= СокрЛП(Лев(ТабСотр.Сотрудник.НомерЗарплатногоСчета,3)) Тогда
// Если СокрЛП(НомСберк) = СокрЛП(Лев(ТабСотр.Сотрудник.ОтделениеБанка,4)) Тогда
Если СокрЛП(Лев(ТабСотр.Сотрудник.ОтделениеБанка,4)) = "1402" Тогда
Таб.ВывестиСекцию("Строка");
Конецесли;
КонецЕсли;
КонецЦикла;
Таб.Показать();
КонецПроцедуры
Процедура Печать2()
Номстр = 1;
Итогстр = 0;
Дат=ДатаПериод;
Таб=СоздатьОбъект("Таблица") ;
Таб.ИсходнаяТаблица("Таблица2");
ТабСотр.ВыбратьСтроки();
Таб.ВывестиСекцию("Шапка");
Пока ТабСотр.ПолучитьСтроку()=1 Цикл
Если СокрЛП(НомСчета)= СокрЛП(Лев(ТабСотр.Сотрудник.НомерЗарплатногоСчета,3)) Тогда
// Если СокрЛП(НомСберк) = СокрЛП(Лев(ТабСотр.Сотрудник.ОтделениеБанка,4)) Тогда
Если СокрЛП(Лев(ТабСотр.Сотрудник.ОтделениеБанка,4)) = "1402" Тогда
Таб.ВывестиСекцию("Строка");
Номстр = Номстр + 1;
Итогстр = Итогстр + ТабСотр.Сумма;
Конецесли;
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("Подвал");
Таб.Показать();
КонецПроцедуры
//================================ ============================================================ ===========================
Процедура Выгрузить()
// выполним минимальную проверку:
Если ПустоеЗначение(ДокВып)=1 Тогда
Предупреждение("Не выбрана Платежная ведомость",10);
Возврат;
КонецЕсли;
Если ПустоеЗначение(Каталог)=1 Тогда
Предупреждение("Выберите каталог для выгрузки",10);
//ВыборКаталога(Каталог);
Возврат;
КонецЕсли;
Если ПустоеЗначение(НомСберк)=1 Тогда
Предупреждение("Не указано Отделение Банка",10);
Возврат;
КонецЕсли;
Если ПустоеЗначение(НомФилиала)=1 Тогда
Предупреждение("Не указан Номер Филиала",10);
Возврат;
КонецЕсли;
Если ПустоеЗначение(Договор)=1 Тогда
Предупреждение("Не указан Номер Договора",10);
Возврат;
КонецЕсли;
Если ФормироватьФайл=0 Тогда
Предупреждение("В выбранной Ведомости нет сотрудников, у которых Отделение Банка "+НомСберк,10);
Возврат;
КонецЕсли;
Если Формат_DBF=0 Тогда
Текст=СоздатьОбъект("Текст");
Текст.КодоваяСтраница(1);
Путь=Каталог;
НомСК=СокрЛП(НомСберк);
НомФилиала=СокрЛП(НомФилиала);
Договор=СокрЛП(Договор);
//НомСк=Прав(НомСК,4);
//НомСК="7931";
НомПП=0;
СуммаИтог = 0;
ТабСотр.ВыбратьСтроки();
Пока ТабСотр.ПолучитьСтроку()=1 Цикл
НомПП=НомПП+1;
СтрокаВыгрузки=СокрЛП(Строка(НомПП))+Симв(124)+СокрЛП(НомСК)+Симв(124)+СокрЛП(НомФилиала)+Симв(124);
СтрокаВыгрузки=СтрокаВыгрузки+ФамИмОт(ТабСотр.Сотрудник);
СтрокаВыгрузки=СтрокаВыгрузки+СокрЛП(ТабСотр.Сотрудник.НомерЗарплатногоСчета)+Симв(124)+Макс(СокрЛП(Строка(Формат(ТабСотр.Сумма,"Ч15.2"))),0);
СуммаИтог = СуммаИтог + ТабСотр.Сумма;
Текст.ДобавитьСтроку(СтрокаВыгрузки);
КонецЦикла;
Если СуммаИтог=0 Тогда
Предупреждение("Итоговая сумма = 0. Файл не сформирован!",10);
Возврат;
КонецЕсли;
День = ДатаЧисло(ДатаДок);
//ИмяФайла=НомСК+Договор+ Строка(Прав(НомДок,1)) + ".s" + Строка(День);
ИмяФайла=НомСК+НомФилиала + ".s" + Строка(День);
//Текст.УдалитьФайл(ИмяФайла);
Текст.Записать(ИмяФайла);
//ФС.КопироватьФайл(КаталогПользователя()+ИмяФайла,Путь+"\"+ИмяФайла,0);
ФС.ПереименоватьФайл(КаталогПользователя()+ИмяФайла,Каталог+"\"+ИмяФайла,1);
Текст2=СоздатьОбъект("Текст");
Текст2.КодоваяСтраница(1);
СтрокаОрг=СокрЛП(Константа.СокращенноеНаименованиеОрганизации) + Симв(124)+СокрЛП(Договор)+Симв(124)+СокрЛП(Строка(НомСберк))+Симв(124)+СокрЛП(НомФилиала)+Симв(124)+Строка(НомПП)+Симв(124)+СокрЛП(Строка(Формат(СуммаИтог,"Ч15.2")));
Текст2.ДобавитьСтроку(СтрокаОрг);
//ИмяФ="7931014" + Строка(Прав(НомДок,1)) + ".p" + Строка(День);
ИмяФ=НомСК+НомФилиала + ".k" + Строка(День);
//ИмяФ="p7931000.pck";
Текст2.Записать(ИмяФ);
//ФС.КопироватьФайл(КаталогПользователя()+ИмяФ,Путь+"\"+ИмяФ,0);
ФС.ПереименоватьФайл(КаталогПользователя()+ИмяФ,Каталог+"\"+ИмяФ,1);
Иначе
Если ПустоеЗначение(НомДок)=1 Тогда
Предупреждение("Не указан # Платежного поручения",10);
Возврат;
КонецЕсли;
Если ПустоеЗначение(ВидЗачисления)=1 Тогда
Предупреждение("Не указан Вид зачисления",10);
Возврат;
КонецЕсли;
// создаем *.dbf файл:
// имя файла в формате: sNNNNMMM.dbf, где
//S - специализированный отличительный символ;
//NNNN- номер филиала Сбербанка России, в котором открыты счета физических лиц, на которые должны быть зачислены суммы, указанные в Реестре;
//МММ - порядковый номер Реестра.
//Значение специализированного отличительного символа (s) присваивается в следующем порядке:
//латинская строчная буква "f' - если Реестр направляется для зачисления сумм на счета физических лиц, открытые непосредственно в филиале Банка, в адрес которого передается Реестр;
//латинская строчная буква "t" - если Реестр направляется для зачисления сумм на счета физических лиц, открытые в филиале-получателе, организационно подчиненном филиалу Банка, в адрес которого передается Реестр.
//Правила формирования порядкового номера Реестра устанавливаются Предприятием самостоятельно, при ЭТОМ допускается использовать в номере как цифры, так и буквы латинского алфавита. В то же время, обязательным условием является обеспечение уникальности порядкового номера для каждого сформированного Реестра.
// в качестве порядкового номера используем номер Плат.поручения (для автоуникальности).
S=?(Число(ВидЗачисления)=1,"f","f");
S=?(ВидЗачисления=1,"f","f");
МММ=Прав("00"+СокрЛП(НомДок),3);
ИмяФ= S+СокрЛП(НомСберк)+МММ + ".dbf";
НомПП=0; СуммаИтог = 0;
ФИО=глРазделить(ТабСотр.Сотрудник.Наименование," ");
ДБФ = СоздатьОбъект("XBase");
ДБФ.КодоваяСтраница(1);
ДБФ.ДобавитьПоле("A",2,30,); ДБФ.ДобавитьПоле("B",2,30,); ДБФ.ДобавитьПоле("C",2,30,);
ДБФ.ДобавитьПоле("D",2,30,); ДБФ.ДобавитьПоле("E",2,30,); ДБФ.ДобавитьПоле("F",2,30,);
ДБФ.ДобавитьПоле("G",2,30,);
ДБФ.СоздатьФайл(КаталогПользователя()+ИмяФ,Путь+"\"+ИмяФ);
ДБФ.АвтоСохранение(1);
ДБФ.Первая();
ДБФ.Добавить();
// первая строка файла
ДБФ.A=НаименФилиала+""""+СокрЛП(НомФилиала);
ДБФ.Добавить();
// вторая строка файла
ДБФ.A="К платежному поручению #";
ДБФ.B=НомДок;
ДБФ.C="от";
ДБФ.D=Лев(ДатаДок,6)+ДатаГод(ДатаДок);
ДБФ.Добавить();
// третья строка файла
ДБФ.A="Зачисление";
ДБФ.B=ВидЗачисления;
ДБФ.Добавить();
// четвертая строка файла
ДБФ.A="Наименование,ОГРН,# банк.счета";
ДБФ.B=НаимОрганизации+" "+ОГРН;
ДБФ.C=РасчетныйСчет;
ДБФ.Добавить();
// пятая строка файла
ДБФ.A="По договору:";
ДБФ.B=Договор;
ДБФ.C="от";
ДБФ.D=Лев(ДатаДоговора,6)+ДатаГод(ДатаДоговора);
ДБФ.Добавить();
// шестая строка файла
ДБФ.A="# п/п";
ДБФ.B="Номер счета";
ДБФ.C="Фамилия";
ДБФ.D="Имя";
ДБФ.E="Отчество";
ДБФ.F="Сумма";
ДБФ.G="Примечание";
ДБФ.Добавить();
ТабСотр.ВыбратьСтроки();
Пока ТабСотр.ПолучитьСтроку()=1 Цикл
НомПП=НомПП+1;
ФИО=глРазделить(ТабСотр.Сотрудник.Наименование," ");
//ДБФ.АвтоСохранение(1);
ДБФ.A=НомПП;
ДБФ.B=СокрЛП(ТабСотр.Сотрудник.НомерЗарплатногоСчета);
ДБФ.C=СокрЛП(СтрПолучитьСтроку(ФИО,1));
ДБФ.D=СокрЛП(СтрПолучитьСтроку(ФИО,2));
ДБФ.E=СокрЛП(СтрПолучитьСтроку(ФИО,3));
ДБФ.F=Макс(СокрЛП(Строка(Формат(ТабСотр.Сумма,"Ч15.2"))),0);
ДБФ.Добавить();
СуммаИтог = СуммаИтог + ТабСотр.Сумма;
КонецЦикла;
Если СуммаИтог=0 Тогда
Предупреждение("Итоговая сумма = 0. Файл не сформирован!",10);
Возврат;
КонецЕсли;
ДБФ.A=НомПП+1;
ДБФ.B="ИТОГО:"; // последняя строка файла
// ДБФ.F=СуммаИтог;
ДБФ.F=Макс(СокрЛП(Строка(Формат(СуммаИтог,"Ч15.2"))),0);
// ДБФ.Добавить();
ДБФ.Записать();
ДБФ.ЗакрытьФайл();
ФС.ПереименоватьФайл(КаталогПользователя()+ИмяФ,Каталог+"\"+ИмяФ,1);
КонецЕсли;
Предупреждение("Файл "+Каталог+"\"+ИмяФ+" сформирован!",5);
КонецПроцедуры
//==================================== ============================================================ =======================
Процедура ФорматВыгрузки()
Если Формат_DBF=1 Тогда
Формат_TXT=0;
Форма.Формат_TXT.Доступность(0);
Иначе
Формат_TXT=1;
Форма.Формат_TXT.Доступность(1);
КонецЕсли;
КонецПроцедуры
//==================================== ============================================================ ======================="
У организации существует такая обработка, которая выгружает списки сотрудников на получение зарплаты в специальный формат для отправки в банк, и распечатывает реестры, в которых расписывается директор и т.д.
Так вот, написана она была для другой организации и формирует шапку с названием другой организации и директором а вот таблицу формирует нашу на основании данных из (Журнала документов по кассе) так вот, я не могу никак найти табличную часть в конфигураторе откуда эта обработка берет шапку и все остальное, я знаю что есть некая таблица в которой уже вбиты организация и все остальное, но найти не могу...
Поэтому приходится вручную переносить табличную часть из выгруженного реестра в свой с нашей шапкой, и еще после выгрузки в файл, почему то меняет номер договора, хотя в обработке он прописан правильно, а после выгрузки ставит вместо 00000018, 00000016, я не разбираюсь в языке написания обработок,
вот собственно и обработка, посомтрите пожалуйста, спасибо.
//*******************************************
Перем ДатаПериод;
Перем Фамилия, Имя, Отчество, НомСК, НаимОрганизации, ОГРН,f,t;
Перем СуммаИтог, ФормироватьФайл;
//==============================================
Процедура ПриОткрытии() // установка параметров по умолчанию
НаимОрганизации="ООО ЮНИ";
//НаимОрганизации=СокрЛП(Константа.НазваниеОрганизации); // полное наименование
ОГРН=СокрЛП(Константа.ОГРН);
РасчетныйСчет="40702810007300000033";
ВидЗачисления="01";
Формат_DBF=1; // формат выгрузки по умолчанию 1 - для DBF, 0 - для TXT
НомДок="000001";
ДатаДок=ТекущаяДата();
НомСберк="0382";
НомСчета="408";
НаименФилиала=СокрЛП("Россошанское ОСБ");
НомФилиала="382";
Договор="00000018";
ДатаДоговора="26.11.2009";
Каталог="\\Optifood-data\Users$\ЛаринаТМ\Desktop\зарплата"; // если на дискету, тогда ЛАТИНСКАЯ буква А Буквы ТОЛЬКО ЛАТИНСКИЕ!!!!!!!!!!!!!!!!!
ФормироватьФайл=0; // не трогать!!!
Реестр = ДатаМесяц(ТекущаяДата())-1;
Дат=ДатаПериод;
ДатаРеестр = ТекущаяДата();
КонецПроцедуры
//================================
Функция ФамИмОт(Объект,Фамилия="""",Имя="""",Отчество="""")
Если ТипЗначения(Объект)=2 Тогда
ФИО = глРазделить(СокрЛП(Объект),",");
Иначе
ФИО = глРазделить(СокрЛП(Объект.Наименование),",");
КонецЕсли;
ФИО = глРазложить(ФИО," ");
Фамилия = """"; Имя = """"; Отчество = """";
Если ФИО.РазмерСписка() > 0 Тогда
Фамилия = ФИО.ПолучитьЗначение(1);
Если ФИО.РазмерСписка() > 1 Тогда
Имя = ФИО.ПолучитьЗначение(2);
Если ФИО.РазмерСписка() > 2 Тогда
// а вот отчество бывает и не из одного слова
Для Сч = 3 По ФИО.РазмерСписка() Цикл
Отчество = Отчество + ФИО.ПолучитьЗначение(Сч) + " ";
КонецЦикла;
Если ПустоеЗНачение(Отчество) = 0 Тогда
Отчество = Лев(Отчество,СтрДлина(Отчество)-1);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Фамилия+Симв(124)+?(ПустоеЗначение(Имя)=1," ",СокрЛП(Имя))+Симв(124)+?(ПустоеЗначение(Отчество)=1," ",СокрЛП(Отчество))+Симв(124);
КонецФункции
//======================================
Процедура ВыборКаталога(Каталог)
Кат = "С:\";
Если ФС.ВыбратьКаталог(Кат, "Выберите каталог")=1 Тогда
Каталог = Кат;
КонецЕсли;
КонецПроцедуры
//====================================
Процедура ПриНачалеВыбораЗначения(Поле, Фл)
Если Поле = "Каталог" Тогда
ВыборКаталога(Каталог);
КонецЕсли;
КонецПроцедуры
//====================================
Процедура ПриВыбореДок()
СуммаИтог =0;
ТабСотр.Очистить();
ТабСотр.НоваяКолонка("Сотрудник","Справочник.Сотрудники") ;
ТабСотр.НоваяКолонка("Сумма","Ч",10,2);
ТекущийДок=ДокВып;
ТекущийДок.ВыбратьСтроки();
Пока ТекущийДок.ПолучитьСтроку()=1 Цикл
Если РСБ =1 Тогда
Если СокрЛП(НомСчета)= СокрЛП(Лев(ТекущийДок.Сотрудник.НомерЗарплатногоСчета,3)) Тогда
Если СокрЛП(Лев(ТекущийДок.Сотрудник.ОтделениеБанка,4)) = "1402" Тогда
ТабСотр.НоваяСтрока();
ТабСотр.Сотрудник=ТекущийДок.Сотрудник;
ТабСотр.Сумма=ТекущийДок.Сумма;
КонецЕсли;
КонецЕсли;
Иначе
Если СокрЛП(НомСчета)= СокрЛП(Лев(ТекущийДок.Сотрудник.НомерЗарплатногоСчета,3)) Тогда
Если СокрЛП(Лев(ТекущийДок.Сотрудник.ОтделениеБанка,4)) <> "1402" Тогда
ТабСотр.НоваяСтрока();
ТабСотр.Сотрудник=ТекущийДок.Сотрудник;
ТабСотр.Сумма=ТекущийДок.Сумма;
КонецЕсли;
КонецЕсли;
КонецЕсли;
СуммаИтог = СуммаИтог + ТабСотр.Сумма;
КонецЦикла;
ДатаПериод=ТекущийДок.ДатаПериода;
Если СуммаИтог=0 Тогда
Предупреждение("В выбранной Ведомости нет сотрудников, у которых Номер счета начинается на "+Лев(НомСчета,3));
Возврат;
Иначе
ФормироватьФайл=1;
КонецЕсли;
КонецПроцедуры
//================================
Процедура Печать()
Дат=ДатаПериод;
Таб=СоздатьОбъект("Таблица") ;
Таб.ИсходнаяТаблица("Таблица");
Таб.ВывестиСекцию("Шапка");
НомерСТрокиНаСтранице=10;
КолСтрок=ТабСотр.КоличествоСтрок();
СтрокНаСтранице=30;
СтрокНа1Странице=35;
//Страниц=КолСтрок/СтрокНаСтранице;
НомЛист=1;
СтрокПодвал=11;
НомПП=0;
СуммаИтог=0;
СуммаЛист=0;
//Страница=1;
Если (КолСтрок>=18) и (КолСтрок<25)Тогда
СтрокНа1Странице=28;
КонецЕсли;
ТабСотр.ВыбратьСтроки();
Пока ТабСотр.ПолучитьСтроку()=1 Цикл
Если НомЛист<>1 Тогда
Если НомерСтрокиНаСтранице>=СтрокНаСтранице Тогда
Таб.ВывестиСекцию("ИтогЛист");
Таб.ВывестиСекцию("Лист");
Таб.НоваяСтраница();
СуммаЛист=0;
НомЛист=НомЛист+1;
//Страница=Страница+1;
НомерСтрокиНаСтранице=2;
Таб.ВывестиСекцию("ШапкаМал");
КонецЕсли;
ИначеЕсли НомЛист=1 Тогда
Если НомерСтрокиНаСтранице=СтрокНа1Странице Тогда
Таб.ВывестиСекцию("ИтогЛист");
Таб.ВывестиСекцию("Лист");
Таб.НоваяСтраница();
СуммаЛист=0;
НомЛист=НомЛист+1;
//Страница=Страница+1;
НомерСтрокиНаСтранице=2;
Таб.ВывестиСекцию("ШапкаМал");
КонецЕсли;
КонецЕсли;
НомПП=НомПП+1;
СуммаИтог=СуммаИтог+ТабСотр.Сумма;
СуммаЛист=СуммаЛист+ТабСотр.Сумма;
Таб.ВывестиСекцию("Строка");
НомерСтрокиНаСтранице=НомерСтрокиНаСтранице+1;
//Если (НомерСтрокиНаСтранице>=СтрокНаСтранице) или(НомПП=КолСтрок) Тогда
// Если НомЛист>1 Тогда
// Таб.ВывестиСекцию("ИтогЛист");
// КонецЕсли;
//КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("ИтогЛист");
Таб.ВывестиСекцию("Итог");
Таб.ВывестиСекцию("Подвал");
Таб.ВывестиСекцию("Лист");
Таб.Показать();
КонецПроцедуры
Процедура Печать1()
Дат=ДатаПериод;
Таб=СоздатьОбъект("Таблица") ;
Таб.ИсходнаяТаблица("Таблица1");
ТабСотр.ВыбратьСтроки();
Пока ТабСотр.ПолучитьСтроку()=1 Цикл
Если СокрЛП(НомСчета)= СокрЛП(Лев(ТабСотр.Сотрудник.НомерЗарплатногоСчета,3)) Тогда
// Если СокрЛП(НомСберк) = СокрЛП(Лев(ТабСотр.Сотрудник.ОтделениеБанка,4)) Тогда
Если СокрЛП(Лев(ТабСотр.Сотрудник.ОтделениеБанка,4)) = "1402" Тогда
Таб.ВывестиСекцию("Строка");
Конецесли;
КонецЕсли;
КонецЦикла;
Таб.Показать();
КонецПроцедуры
Процедура Печать2()
Номстр = 1;
Итогстр = 0;
Дат=ДатаПериод;
Таб=СоздатьОбъект("Таблица") ;
Таб.ИсходнаяТаблица("Таблица2");
ТабСотр.ВыбратьСтроки();
Таб.ВывестиСекцию("Шапка");
Пока ТабСотр.ПолучитьСтроку()=1 Цикл
Если СокрЛП(НомСчета)= СокрЛП(Лев(ТабСотр.Сотрудник.НомерЗарплатногоСчета,3)) Тогда
// Если СокрЛП(НомСберк) = СокрЛП(Лев(ТабСотр.Сотрудник.ОтделениеБанка,4)) Тогда
Если СокрЛП(Лев(ТабСотр.Сотрудник.ОтделениеБанка,4)) = "1402" Тогда
Таб.ВывестиСекцию("Строка");
Номстр = Номстр + 1;
Итогстр = Итогстр + ТабСотр.Сумма;
Конецесли;
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("Подвал");
Таб.Показать();
КонецПроцедуры
//================================
Процедура Выгрузить()
// выполним минимальную проверку:
Если ПустоеЗначение(ДокВып)=1 Тогда
Предупреждение("Не выбрана Платежная ведомость",10);
Возврат;
КонецЕсли;
Если ПустоеЗначение(Каталог)=1 Тогда
Предупреждение("Выберите каталог для выгрузки",10);
//ВыборКаталога(Каталог);
Возврат;
КонецЕсли;
Если ПустоеЗначение(НомСберк)=1 Тогда
Предупреждение("Не указано Отделение Банка",10);
Возврат;
КонецЕсли;
Если ПустоеЗначение(НомФилиала)=1 Тогда
Предупреждение("Не указан Номер Филиала",10);
Возврат;
КонецЕсли;
Если ПустоеЗначение(Договор)=1 Тогда
Предупреждение("Не указан Номер Договора",10);
Возврат;
КонецЕсли;
Если ФормироватьФайл=0 Тогда
Предупреждение("В выбранной Ведомости нет сотрудников, у которых Отделение Банка "+НомСберк,10);
Возврат;
КонецЕсли;
Если Формат_DBF=0 Тогда
Текст=СоздатьОбъект("Текст");
Текст.КодоваяСтраница(1);
Путь=Каталог;
НомСК=СокрЛП(НомСберк);
НомФилиала=СокрЛП(НомФилиала);
Договор=СокрЛП(Договор);
//НомСк=Прав(НомСК,4);
//НомСК="7931";
НомПП=0;
СуммаИтог = 0;
ТабСотр.ВыбратьСтроки();
Пока ТабСотр.ПолучитьСтроку()=1 Цикл
НомПП=НомПП+1;
СтрокаВыгрузки=СокрЛП(Строка(НомПП))+Симв(124)+СокрЛП(НомСК)+Симв(124)+СокрЛП(НомФилиала)+Симв(124);
СтрокаВыгрузки=СтрокаВыгрузки+ФамИмОт(ТабСотр.Сотрудник);
СтрокаВыгрузки=СтрокаВыгрузки+СокрЛП(ТабСотр.Сотрудник.НомерЗарплатногоСчета)+Симв(124)+Макс(СокрЛП(Строка(Формат(ТабСотр.Сумма,"Ч15.2"))),0);
СуммаИтог = СуммаИтог + ТабСотр.Сумма;
Текст.ДобавитьСтроку(СтрокаВыгрузки);
КонецЦикла;
Если СуммаИтог=0 Тогда
Предупреждение("Итоговая сумма = 0. Файл не сформирован!",10);
Возврат;
КонецЕсли;
День = ДатаЧисло(ДатаДок);
//ИмяФайла=НомСК+Договор+ Строка(Прав(НомДок,1)) + ".s" + Строка(День);
ИмяФайла=НомСК+НомФилиала + ".s" + Строка(День);
//Текст.УдалитьФайл(ИмяФайла);
Текст.Записать(ИмяФайла);
//ФС.КопироватьФайл(КаталогПользователя()+ИмяФайла,Путь+"\"+ИмяФайла,0);
ФС.ПереименоватьФайл(КаталогПользователя()+ИмяФайла,Каталог+"\"+ИмяФайла,1);
Текст2=СоздатьОбъект("Текст");
Текст2.КодоваяСтраница(1);
СтрокаОрг=СокрЛП(Константа.СокращенноеНаименованиеОрганизации) + Симв(124)+СокрЛП(Договор)+Симв(124)+СокрЛП(Строка(НомСберк))+Симв(124)+СокрЛП(НомФилиала)+Симв(124)+Строка(НомПП)+Симв(124)+СокрЛП(Строка(Формат(СуммаИтог,"Ч15.2")));
Текст2.ДобавитьСтроку(СтрокаОрг);
//ИмяФ="7931014" + Строка(Прав(НомДок,1)) + ".p" + Строка(День);
ИмяФ=НомСК+НомФилиала + ".k" + Строка(День);
//ИмяФ="p7931000.pck";
Текст2.Записать(ИмяФ);
//ФС.КопироватьФайл(КаталогПользователя()+ИмяФ,Путь+"\"+ИмяФ,0);
ФС.ПереименоватьФайл(КаталогПользователя()+ИмяФ,Каталог+"\"+ИмяФ,1);
Иначе
Если ПустоеЗначение(НомДок)=1 Тогда
Предупреждение("Не указан # Платежного поручения",10);
Возврат;
КонецЕсли;
Если ПустоеЗначение(ВидЗачисления)=1 Тогда
Предупреждение("Не указан Вид зачисления",10);
Возврат;
КонецЕсли;
// создаем *.dbf файл:
// имя файла в формате: sNNNNMMM.dbf, где
//S - специализированный отличительный символ;
//NNNN- номер филиала Сбербанка России, в котором открыты счета физических лиц, на которые должны быть зачислены суммы, указанные в Реестре;
//МММ - порядковый номер Реестра.
//Значение специализированного отличительного символа (s) присваивается в следующем порядке:
//латинская строчная буква "f' - если Реестр направляется для зачисления сумм на счета физических лиц, открытые непосредственно в филиале Банка, в адрес которого передается Реестр;
//латинская строчная буква "t" - если Реестр направляется для зачисления сумм на счета физических лиц, открытые в филиале-получателе, организационно подчиненном филиалу Банка, в адрес которого передается Реестр.
//Правила формирования порядкового номера Реестра устанавливаются Предприятием самостоятельно, при ЭТОМ допускается использовать в номере как цифры, так и буквы латинского алфавита. В то же время, обязательным условием является обеспечение уникальности порядкового номера для каждого сформированного Реестра.
// в качестве порядкового номера используем номер Плат.поручения (для автоуникальности).
S=?(Число(ВидЗачисления)=1,"f","f");
S=?(ВидЗачисления=1,"f","f");
МММ=Прав("00"+СокрЛП(НомДок),3);
ИмяФ= S+СокрЛП(НомСберк)+МММ + ".dbf";
НомПП=0; СуммаИтог = 0;
ФИО=глРазделить(ТабСотр.Сотрудник.Наименование," ");
ДБФ = СоздатьОбъект("XBase");
ДБФ.КодоваяСтраница(1);
ДБФ.ДобавитьПоле("A",2,30,); ДБФ.ДобавитьПоле("B",2,30,); ДБФ.ДобавитьПоле("C",2,30,);
ДБФ.ДобавитьПоле("D",2,30,); ДБФ.ДобавитьПоле("E",2,30,); ДБФ.ДобавитьПоле("F",2,30,);
ДБФ.ДобавитьПоле("G",2,30,);
ДБФ.СоздатьФайл(КаталогПользователя()+ИмяФ,Путь+"\"+ИмяФ);
ДБФ.АвтоСохранение(1);
ДБФ.Первая();
ДБФ.Добавить();
// первая строка файла
ДБФ.A=НаименФилиала+""""+СокрЛП(НомФилиала);
ДБФ.Добавить();
// вторая строка файла
ДБФ.A="К платежному поручению #";
ДБФ.B=НомДок;
ДБФ.C="от";
ДБФ.D=Лев(ДатаДок,6)+ДатаГод(ДатаДок);
ДБФ.Добавить();
// третья строка файла
ДБФ.A="Зачисление";
ДБФ.B=ВидЗачисления;
ДБФ.Добавить();
// четвертая строка файла
ДБФ.A="Наименование,ОГРН,# банк.счета";
ДБФ.B=НаимОрганизации+" "+ОГРН;
ДБФ.C=РасчетныйСчет;
ДБФ.Добавить();
// пятая строка файла
ДБФ.A="По договору:";
ДБФ.B=Договор;
ДБФ.C="от";
ДБФ.D=Лев(ДатаДоговора,6)+ДатаГод(ДатаДоговора);
ДБФ.Добавить();
// шестая строка файла
ДБФ.A="# п/п";
ДБФ.B="Номер счета";
ДБФ.C="Фамилия";
ДБФ.D="Имя";
ДБФ.E="Отчество";
ДБФ.F="Сумма";
ДБФ.G="Примечание";
ДБФ.Добавить();
ТабСотр.ВыбратьСтроки();
Пока ТабСотр.ПолучитьСтроку()=1 Цикл
НомПП=НомПП+1;
ФИО=глРазделить(ТабСотр.Сотрудник.Наименование," ");
//ДБФ.АвтоСохранение(1);
ДБФ.A=НомПП;
ДБФ.B=СокрЛП(ТабСотр.Сотрудник.НомерЗарплатногоСчета);
ДБФ.C=СокрЛП(СтрПолучитьСтроку(ФИО,1));
ДБФ.D=СокрЛП(СтрПолучитьСтроку(ФИО,2));
ДБФ.E=СокрЛП(СтрПолучитьСтроку(ФИО,3));
ДБФ.F=Макс(СокрЛП(Строка(Формат(ТабСотр.Сумма,"Ч15.2"))),0);
ДБФ.Добавить();
СуммаИтог = СуммаИтог + ТабСотр.Сумма;
КонецЦикла;
Если СуммаИтог=0 Тогда
Предупреждение("Итоговая сумма = 0. Файл не сформирован!",10);
Возврат;
КонецЕсли;
ДБФ.A=НомПП+1;
ДБФ.B="ИТОГО:"; // последняя строка файла
// ДБФ.F=СуммаИтог;
ДБФ.F=Макс(СокрЛП(Строка(Формат(СуммаИтог,"Ч15.2"))),0);
// ДБФ.Добавить();
ДБФ.Записать();
ДБФ.ЗакрытьФайл();
ФС.ПереименоватьФайл(КаталогПользователя()+ИмяФ,Каталог+"\"+ИмяФ,1);
КонецЕсли;
Предупреждение("Файл "+Каталог+"\"+ИмяФ+" сформирован!",5);
КонецПроцедуры
//====================================
Процедура ФорматВыгрузки()
Если Формат_DBF=1 Тогда
Формат_TXT=0;
Форма.Формат_TXT.Доступность(0);
Иначе
Формат_TXT=1;
Форма.Формат_TXT.Доступность(1);
КонецЕсли;
КонецПроцедуры
//====================================
04.02.2011
08:27
#2
Мало того, что сперли где то обработку, так еще и не можете ее настроить? Пригласите разработчика, он вам наладит!
04.02.2011
09:28
#3
С чего вы взяли что спёрли! это наша же компания, только написана она для другого филиала, и они нам её передали, рано или поздно я настрою её, и без помощи разработчиков, думал что здесь обитают специалисты и они помогут, оказалось что нет.
04.02.2011
09:59
#4
Помочь найти макет, в котором жестко указано наименование предприятия? Ищите что там в обработке нарисовано в макете "Таблица"
04.02.2011
10:24
#5
Я все перерыл, не могу найти ничего....
я вот думаю может создать самому шапку, и в обработке прописать откуда её брать...
я вот думаю может создать самому шапку, и в обработке прописать откуда её брать...
04.02.2011
11:15
#7
Открываешь обработку в конфигураторе, внизу закладочки, нажимаешь на "Таблица", в 12 строке "Шапки" видишь то что вбито руками, исправляешь на нужное, сохраняешь и смотришь!
Читают тему
(гостей: 1)