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