ИБ(w) : Формат бланка + 7.4.11. Экспорт-импорт остатков и счетов 6. Зарплата + M2_SALDO.BARНОМЕР  фяђМ1Courier New CYR Pр) ИБ(w) : Данные универсального редактора Z Бланк рассчитывает остатки по всем или заданным счетам на заданную дату (конец отчетного^ периода) и, если они не нулевые или задан режим вывода всех счетов, сохраняет их в DBF-файлеY (экспорт). Файл может располагаться на жестком диске, логическом сетевом или дискете поW выбору пользователя (по умолчанию - в текущей директории программы "Инфо-Бухгалтер").W Далее эти остатки можно перенести в качестве исходных в другую базу (импорт), а такжеM добавить в принимающий план счетов отсутствующие в нем счета (опционально).W Бланк может быть полезен при переносе итоговых исходящих остатков из журнала прошлогоT года в текущий журнал, если разделение журналов было произведено до окончательногоW формирования остатков по счетам, а также для объединения планов счетов из разных баз.Y Операция ответственная, поэтому рекомендуется предварительно сделать копию базы данных,D в которую будет производиться импорт остатков и добавление счетов.F Рассчитайте бланк и выберите операцию, которую необходимо выполнить.Q При выполнении операции экспорта будет дополнительно запрошена дата, на которуюZ рассчитываются исходящие остатки, а также счета-вершины деревьев счетов, остатки (счета)" по которым будут экспортированы.X Импорт может производиться как с полным удалением исходных остатков (счета при этом НЕ9 удаляются!), так и с замещением имеющихся (по запросу).Y Если в принимающем плане счетов отсутствует импортируемый счет, то этот счет может быть] добавлен (объединение плана счетов) со свойствами, которые он имел в исходном плане счетов.X Эта опция активизируется по соответствующему запросу перед началом выполнения операции импорта.ЂГрафа1яя`5// Блок ЗАРПЛАТА+ для программы Инфо-Бухгалтер 8.3хх6// (С) ООО ИЦ "Логика", http://users.kaluga.ru/logikaH// Автор - Сергей Олейник , тел/факс (0842)-550103, тел. (08442)-41658:// e-mail: logika@kaluga.ru, ICQ # 15324488 S// Автор и коллектив разработчиков будут признательны за все замечания и пожелания,// пользователей ?// '// - ДАТА ПОСЛЕДНЕГО ИЗМЕНЕНИЯ 14.04.05//// Импорт-экспорт остатков<// Mоп=ВВЕСТИ_ЗНАЧЕНИЕ(" Выберите операцию : ", +["Расчет исходящих остатков и их экспорт ",,"Импорт исходных счетов/остатков из файла ",("Редактирование файла счетов/остатков ", "Выход"],1))ЕСЛИ оп=0 ИЛИ оп=4 ТО СТОП_ВСЕ КОНЕЦ_ЕСЛИ///////////// Расчет и экспорт: ЕСЛИ оп=1 ТО дата_к=ДАТА_КОНI дата_к=ВВОД_ЗНАЧЕНИЯ("Введите дату окончания отчетного периода",дата_к) ЕСЛИ дата_к<>ДАТА_КОН ТО Q СООБЩЕНИЕ("Установите в календаре дату окончания отчетного периода"+СИМВ(13)+% "равной "+СТР0(дата_к)) СТОП_ВСЕ КОНЕЦ_ЕСЛИ вывод_всех=ДАF ЕСЛИ ВОПРОС("Экспортировать только счета с ненулевыми остатками") ТО вывод_всех=НЕТ КОНЕЦ_ЕСЛИB опп=ВВЕСТИ_ЗНАЧЕНИЕ("Задайте, откуда будет произведен импорт: ", ["Из всего плана счетов",! "Из заданных счетов-вершин"],1) счн="*" инд_сч["$$$"]=0 СБРОС(инд_сч) к=0 сди=0 ски=0 ЦИКЛ ПОКА(ДА) ЕСЛИ опп=2 ТО d счн=ВЫБОР_СЧЕТА(счн,НЕТ,"Выберите счет-вершину для экспорта счетов/остатков его субсчетов: ")  сди_сч=0 ски_сч=0 к_сч=0$ ЕСЛИ счн="" ТО СТОП КОНЕЦ_ЕСЛИ счет=СЧЕТ_СЧИТАТЬ(счн) ЕСЛИ НЕ ЕСТЬ_СУБСЧ(счн) ТО= до=ОСД(счн) ко=ОСК(счн) // суммовые остатки (Д К)3 ЕСЛИ счет.кол ТО // количественные (Д К) док=ОСД_К(счн) кок=ОСК_К(счн) КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИC ЕСЛИ до<>0 ИЛИ ко<>0 ИЛИ док<>0 ИЛИ кок <>0 ИЛИ вывод_всех ТО к++ к_сч++ ксч!к=счн сдо!к=до ско!к=ко сдок!к=док скок!к=кок% ЕСЛИ счет.акт ИЛИ счет.пас ТО7 сди=сди+до // общая сумма остатков по дебету8 ски=ски+ко // общая сумма остатков по кредиту= сди_сч=сди_сч+до // общая сумма остатков по дебету> ски_сч=ски_сч+ко // общая сумма остатков по кредиту КОНЕЦ_ЕСЛИ назв_сч!к=счет.название кол_сч!к=счет.кол акт_сч!к=счет.акт пас_сч!к=счет.пас анал_сч!к=счет.аналит еи_сч!к=счет.единицы испфц_сч!к=счет.исп_фц фц_сч!к=счет.фикс_цена КОНЕЦ_ЕСЛИ ЕСЛИ ЕСТЬ_СУБСЧ(счн) ТО счн=счн+"/*" КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИ ЦИКЛ СЧЕТА(сч=счн)[ ЕСЛИ (НЕ вывод_всех И НЕ ЕСТЬ_СУБСЧ(сч)) ИЛИ вывод_всех И НЕ СУЩ_ПЕРЕМ(инд_сч[сч]) ТО инд_сч[сч]=0 до=0 ко=0 док=0 кок=0 3 СТРОКА_СТАТУСА("Расчет остатков счета "+сч) счет=СЧЕТ_СЧИТАТЬ(сч)! ЕСЛИ НЕ ЕСТЬ_СУБСЧ(сч) ТОA до=ОСД(сч) ко=ОСК(сч) // суммовые остатки (Д К)5 ЕСЛИ счет.кол ТО // количественные (Д К) док=ОСД_К(сч)  кок=ОСК_К(сч)  КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИE ЕСЛИ до<>0 ИЛИ ко<>0 ИЛИ док<>0 ИЛИ кок <>0 ИЛИ вывод_всех ТО# к++ к_сч++  ксч!к=сч  сдо!к=до ско!к=ко сдок!к=док скок!к=кок ' ЕСЛИ счет.акт ИЛИ счет.пас ТО9 сди=сди+до // общая сумма остатков по дебету: ски=ски+ко // общая сумма остатков по кредиту? сди_сч=сди_сч+до // общая сумма остатков по дебету@ ски_сч=ски_сч+ко // общая сумма остатков по кредиту КОНЕЦ_ЕСЛИ" назв_сч!к=счет.название  кол_сч!к=счет.кол акт_сч!к=счет.акт пас_сч!к=счет.пас анал_сч!к=счет.аналит еи_сч!к=счет.единицы испфц_сч!к=счет.исп_фц фц_сч!к=счет.фикс_цена КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИ  КОНЕЦ_ЦИКЛА СТРОКА_СТАТУСА("") ЕСЛИ опп=2 ТО M ЕСЛИ НЕ ВОПРОС("Подготовлено к экспорту "+СТР(к_сч)+" счетов"+СИМВ(13)+C "Сумма дебетовых остатков = "+СТР(сди_сч,15,2)+","+СИМВ(13)+? "Сумма кредетовых остатков = "+СТР(ски_сч,15,2)+СИМВ(13)+' "Выбрать следующий счет") ТО СТОП КОНЕЦ_ЕСЛИ ИНАЧЕ СТОП КОНЕЦ_ЕСЛИ КОНЕЦ_ЦИКЛАC ЕСЛИ ВОПРОС("Подготовлено к экспорту "+СТР(к)+" счетов"+СИМВ(13)+= "Сумма дебетовых остатков ="+СТР(сди,15,2)+","+СИМВ(13)+9 "Сумма кредетовых остатков ="+СТР(ски,15,2)+СИМВ(13)+ "Записать в файл") ТОm ф_индс=ТЕК_ДИР+"\SALDO_"+СТР0(ЧИСЛО(ДАТА_ТЕК),2)+"_"+СТР0(МЕС(ДАТА_ТЕК),2)+"_"+СТР0(ГОД(ДАТА_ТЕК))+".DBF" пф=ЗАГЛ(ВЫБОР_ФАЙЛА (ф_индс,/ "Задайте имя файла для экспорта остатков ", "Файлы остатков ","dbf" ))I ЕСЛИ пф="" ТО СООБЩЕНИЕ("Экспорт не произведен!") СТОП_ВСЕ КОНЕЦ_ЕСЛИ ЕСЛИ СУЩ_ФАЙЛ(пф) ТОP ЕСЛИ НЕ ВОПРОС("Такой файл уже существует.Переписать") ТО ВЫХОД КОНЕЦ_ЕСЛИ усп=ФАЙЛ_УДАЛИТЬ(пф) КОНЕЦ_ЕСЛИ  фо=SQL_СОЗДАТЬ(пф,  ["Schet":ТИП_СТРОКА:50, "SchetN":ТИП_СТРОКА:150, "Ei":ТИП_СТРОКА:10, "Akt":ТИП_ЛОГИКА, "Pas":ТИП_ЛОГИКА, "Kol":ТИП_ЛОГИКА, "Anal":ТИП_ЛОГИКА,0 "IspFC":ТИП_ЛОГИКА, // исп.фикс.цена, "FiksC": ТИП_ЧИСЛО: 15; 6, // фикс.цена "OstD": ТИП_ЧИСЛО: 15; 2, "OstK": ТИП_ЧИСЛО: 15; 2, "OstDK": ТИП_ЧИСЛО: 15; 6, "OstKK": ТИП_ЧИСЛО: 15; 6]) сумд=0 сумк=0< СТРОКА_СТАТУСА("Запись в файл "+пф)  ЦИКЛ ДЛЯ(и=1,к) фо.ЗАП_ПОЛЕ("Schet",ксч!и) фо.ЗАП_ПОЛЕ("OstD",сдо!и) фо.ЗАП_ПОЛЕ("OstK",ско!и)! фо.ЗАП_ПОЛЕ("OstDK",сдок!и)) фо.ЗАП_ПОЛЕ("OstKK",скок!и) % фо.ЗАП_ПОЛЕ("SchetN",назв_сч!и) фо.ЗАП_ПОЛЕ("EI",еи_сч!и)! фо.ЗАП_ПОЛЕ("Kol",кол_сч!и)! фо.ЗАП_ПОЛЕ("Akt",акт_сч!и)! фо.ЗАП_ПОЛЕ("Pas",пас_сч!и)# фо.ЗАП_ПОЛЕ("Anal",анал_сч!и)% фо.ЗАП_ПОЛЕ("IspFC",испфц_сч!и)" фо.ЗАП_ПОЛЕ("FiksC",фц_сч!и) фо.ДОБАВИТЬ КОНЕЦ_ЦИКЛА СТРОКА_СТАТУСА("") фо.В_НАЧАЛО w нз=БД_РЕДАКТОР(фо,"Файл экспортированных счетов/остатков на "+СТР0(дата_к)+" (F4-изменить,F7-добавить,F8-удалить)",A ["Schet":"Счет":25,"OstD":"Ост.(Дт)":10,"OstK":"Ост.(Кт)":10,2 "OstDK":"Ост.к(Дт)":10,"OstKK":"Ост.к(Кт)":10,5 "SchetN":"Название":35,"EI":"ЕИ":4,"Kol":"КОЛ":4,M "Akt":"АКТ":4,"Pas":"ПАС":4,"Anal":"АНЛ":4,"IspFC":"ИФЦ":4,"FiksC":"ФЦ":9 ] ,ДА,ДА,ДА,ДА) фо.В_НАЧАЛО  ЦИКЛ ПОКА(фо.СЛЕДУЮЩАЯ) сумд=сумд+фо.ПОЛЕ("OstD") сумк=сумк+фо.ПОЛЕ("OstK") КОНЕЦ_ЦИКЛА////////////////////M СООБЩЕНИЕ("Записано "+СТР(фо.ВСЕГО)+" счетов последнего уровня"+СИМВ(13)+4 "Сумма дебетовых остатков: "+СТР(сумд)+СИМВ(13)+, "Сумма кредетовых остатков: "+СТР(сумк)) фо.ЗАКРЫТЬ G КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИ //////////////// Импорт остатков ЕСЛИ оп=2 ТО9 опп=ВВЕСТИ_ЗНАЧЕНИЕ("Выберите способ записи остатков:",: ["Удалить ВСЕ исходные остатки и имортировать из файла",3 "Заменить исходные остатки в совпадающих счетах", "Выход"],1) доб_отс=НЕТ@ ЕСЛИ ВОПРОС("Добавлять в план счетов отсутствующие счета") ТО  доб_отс=ДА КОНЕЦ_ЕСЛИ- ЕСЛИ опп=0 ИЛИ опп=3 ТО СТОП_ВСЕ КОНЕЦ_ЕСЛИk ф_индс=ТЕК_ДИР+"\SALDO_"+СТР0(ЧИСЛО(ДАТА_ТЕК),2)+"_"+СТР0(МЕС(ДАТА_ТЕК),2)+"_"+СТР0(ГОД(ДАТА_ТЕК))+".DBF"C пф=ЗАГЛ(ВЫБОР_ФАЙЛА (ф_индс,"Выберите файл остатков для импорта", "Файлы остатков ","dbf" ))# ЕСЛИ пф="" ТО СТОП_ВСЕ КОНЕЦ_ЕСЛИJ пн=ПОЗ(".DBF",ЗАГЛ(пф)) I ЕСЛИ пн=0 ТО СООБЩЕНИЕ("Выбран файл другого типа!") СТОП_ВСЕ КОНЕЦ_ЕСЛИ фо=SQL_ОТКРЫТЬ(пф) 4 сеть=?(ПОЛЬЗОВАТЕЛЬ="",НЕТ,ДА) // Проверка на сеть./////////////////// Проверка на наличие счета:% и=0 инд_сч["$$$"]=0 СБРОС(инд_сч) ЦИКЛ ПОКА(фо.СЛЕДУЮЩАЯ) сч=фо.ПОЛЕ("Schet") выв=НЕТ ЕСЛИ СЧЕТ_СУЩ(сч) ТО выв=ДА ИНАЧЕ // нет счета!, ЕСЛИ доб_отс ТО // добавим новый счет разд="А/П"2 ЕСЛИ фо.ПОЛЕ("Akt") И НЕ фо.ПОЛЕ("Pas") ТО разд="АКТ" ИНАЧЕ5 ЕСЛИ фо.ПОЛЕ("Pas") И НЕ фо.ПОЛЕ("Akt") ТО  разд="ПАС" ИНАЧЕ: ЕСЛИ НЕ фо.ПОЛЕ("Pas") И НЕ фо.ПОЛЕ("Akt") ТО  разд="З/Б" КОНЕЦ_ЕСЛИ  КОНЕЦ_ЕСЛИ  КОНЕЦ_ЕСЛИ! ЕСЛИ фо.ПОЛЕ("Anal") ТО  разд=разд+",АН" КОНЕЦ_ЕСЛИ3 ЕСЛИ фо.ПОЛЕ("Kol") ТО // кол-суммовой учет" ЕСЛИ фо.ПОЛЕ("IspFC") ТОY ДОБАВИТЬ_СЧЕТ!(сч,фо.ПОЛЕ("SchetN")+" ",разд,0,фо.ПОЛЕ("EI"),0,фо.ПОЛЕ("FC")) ИНАЧЕ K ДОБАВИТЬ_СЧЕТ!(сч,фо.ПОЛЕ("SchetN")+" ",разд,0,фо.ПОЛЕ("EI"),0) КОНЕЦ_ЕСЛИ ИНАЧЕ // суммовой учет9 ДОБАВИТЬ_СЧЕТ!(сч,фо.ПОЛЕ("SchetN")+" ",разд,0) КОНЕЦ_ЕСЛИ выв=ДА КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИ ////////////////////////////////* ЕСЛИ выв И НЕ СУЩ_ПЕРЕМ(инд_сч[сч]) ТО инд_сч[сч]=03 СТРОКА_СТАТУСА("Импорт остатка по счету "+сч) и++ счета!и=сч о_сум!и=0 о_кол!и=0 ЕСЛИ фо.ПОЛЕ("OstD")<>0 ТО о_сум!и=фо.ПОЛЕ("OstD") ИНАЧЕ! ЕСЛИ фо.ПОЛЕ("OstK")>0 ТО" о_сум!и=-фо.ПОЛЕ("OstK") ИНАЧЕ! о_сум!и=фо.ПОЛЕ("OstK") КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИ! ЕСЛИ фо.ПОЛЕ("OstDK")<>0 ТО о_кол!и=фо.ПОЛЕ("OstDK") ИНАЧЕ" ЕСЛИ фо.ПОЛЕ("OstKK")>0 ТО# о_кол!и=-фо.ПОЛЕ("OstKK") ИНАЧЕ" о_кол!и=фо.ПОЛЕ("OstKK") КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИ КОНЕЦ_ЦИКЛА фо.ЗАКРЫТЬ СТРОКА_СТАТУСА("")////////////////////////////  ЕСЛИ опп=1 ТО k ЕСЛИ НЕ ВОПРОС("Внимание! Все исходные остатки будут удалены! Вы уверены",НЕТ) ТО фо.ЗАКРЫТЬ КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИ $/////////////////// Обработка в сети ЕСЛИ сеть ТО  ЕСЛИ опп=1 ТО ; бо=SQL_ЗАПРОС("DELETE FROM '"+ДИР_БАЗЫ+"\plost.db' ") ид=0V ИНАЧЕ // удаляем только остатки по тем счетам, кот.импортруются * бо=SQL_ОТКРЫТЬ(ДИР_БАЗЫ+"\plost.db") бо.ПЕРЕЙТИ(бо.ВСЕГО)  ид=бо.ПОЛЕ("OSID") бо.В_КОНЕЦ  ЦИКЛ ПОКА(бо.ПРЕДЫДУЩАЯ)3 ЕСЛИ СУЩ_ПЕРЕМ(инд_сч[бо.ПОЛЕ("MCOD")]) ТО  бо.УДАЛИТЬ  КОНЕЦ_ЕСЛИ  КОНЕЦ_ЦИКЛА  бо.ЗАКРЫТЬ  КОНЕЦ_ЕСЛИ ( бо=SQL_ОТКРЫТЬ(ДИР_БАЗЫ+"\plost.db")&////////////////////// Запись остатков ЦИКЛ ДЛЯ(ж=1,и) ! бо.ЗАП_ПОЛЕ("MCOD",счета!ж) бо.ЗАП_ПОЛЕ("OSID",ид+ж)# бо.ЗАП_ПОЛЕ("OSTSUM",о_сум!ж)# бо.ЗАП_ПОЛЕ("OSTKOL",о_кол!ж) ЕСЛИ о_кол!ж<>0 ТО" бо.ЗАП_ПОЛЕ("OSTTYPE","K") ИНАЧЕ" бо.ЗАП_ПОЛЕ("OSTTYPE","S") КОНЕЦ_ЕСЛИ бо.ДОБАВИТЬ КОНЕЦ_ЦИКЛА бо.ЗАКРЫТЬ СТРОКА_СТАТУСА("")I СООБЩЕНИЕ("Остатки импортированы. Перезагрузите программу."+СИМВ(13)+E "Рекомендуем сравнить полученные исходные остатки с исходящими" ) ИНАЧЕ // лок. ЕСЛИ опп=1 ТО // удалить все* СТРОКА_СТАТУСА("Обнуление остатков") ЦИКЛ СЧЕТА(сч="*")! ЕСЛИ НЕ ЕСТЬ_СУБСЧ(сч) ТО с=СЧЕТ_СЧИТАТЬ(сч) с.ост_сум=0 с.ост_кол=0 с.ЗАПИСАТЬ КОНЕЦ_ЕСЛИ КОНЕЦ_ЦИКЛА  СТРОКА_СТАТУСА("")  КОНЕЦ_ЕСЛИ&////////////////////// Запись остатков0 ЦИКЛ ДЛЯ(ж=1,и) ; СТРОКА_СТАТУСА("Запись остатка по счету "+счета!ж) счет=СЧЕТ_СЧИТАТЬ(счета!ж)0 счет.ост_сум=о_сум!ж счет.ост_кол=о_кол!ж счет.ЗАПИСАТЬ КОНЕЦ_ЦИКЛА СТРОКА_СТАТУСА("")6 СООБЩЕНИЕ("Счета/остатки импортированы."+СИМВ(13)+E "Рекомендуем сравнить полученные исходные остатки с исходящими" ) КОНЕЦ_ЕСЛИ КОНЕЦ_ЕСЛИ&/////////////////////// Редактирование ЕСЛИ оп=3 ТОk ф_индс=ТЕК_ДИР+"\SALDO_"+СТР0(ЧИСЛО(ДАТА_ТЕК),2)+"_"+СТР0(МЕС(ДАТА_ТЕК),2)+"_"+СТР0(ГОД(ДАТА_ТЕК))+".DBF"J пф=ЗАГЛ(ВЫБОР_ФАЙЛА (ф_индс,"Выберите файл остатков для редактирования", "Файлы остатков ","dbf" ))# ЕСЛИ пф="" ТО СТОП_ВСЕ КОНЕЦ_ЕСЛИJ пн=ПОЗ(".DBF",ЗАГЛ(пф)) I ЕСЛИ пн=0 ТО СООБЩЕНИЕ("Выбран файл другого типа!") СТОП_ВСЕ КОНЕЦ_ЕСЛИ фо=SQL_ОТКРЫТЬ(пф)u нз=БД_РЕДАКТОР(фо,"Файл экспортированных счетов/остатков на "+СТР0(дата_к)+" (F4-изменить,F7-добавить,F8-удалить)",? ["Schet":"Счет":15,"OstD":"Ост.(Дт)":10,"OstK":"Ост.(Кт)":10,0 "OstDK":"Ост.к(Дт)":10,"OstKK":"Ост.к(Кт)":10,3 "SchetN":"Название":35,"EI":"ЕИ":4,"Kol":"КОЛ":4,K "Akt":"АКТ":4,"Pas":"ПАС":4,"Anal":"АНЛ":4,"IspFC":"ИФЦ":4,"FiksC":"ФЦ":9 ] ,ДА,ДА,ДА,ДА) фо.ЗАКРЫТЬ КОНЕЦ_ЕСЛИ