|
1c ЗУП вопрос по Запросу | ☑ | ||
---|---|---|---|---|
0
Nemirov
20.03.20
✎
16:39
|
Представил не весь запрос, а основное. В "Перем ХарактерыЗарплаты" и "Перем ХарактерыАванса" добавляю перечисления что бы разделить аванс от зарплаты Аванс = 1 зарплата = 0
При выгрузке в файл не срабатывает в запросе соответсвенно колонка пустая. Если с перечислениями не получается, может быть кто подскажет как сделать прям в запросе прописать условие что то типа когда аванс = 1 когда зарплата = 0 без всяких перечислений. Понимаю глупый вопрос студент не судите строго. Если нужен будет весь запрос могу прислать, а так основное что бы глаза не разбегались ...... | ВЫБОР | КОГДА ВедомостиНаВыплатуЗарплаты.СпособВыплаты В (&ХарактерыАванса) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ КАК ХарактерВыплаты, ....... /////////////////////// Перем ХарактерыЗарплаты; Перем ХарактерыАванса; Процедура ПриОткрытии() Флажок1 = Истина; Флажок2 = Истина; Флажок3 = Истина; Флажок4 = Истина; НазначениеПеречислений(); КонецПроцедуры &НаСервереБезКонтекста Процедура НазначениеПеречислений() ХарактерыЗарплаты = Новый СписокЗначений; ХарактерыЗарплаты.Добавить(Перечисления.ХарактерВыплатыЗарплаты.Зарплата); ХарактерыАванса = Новый СписокЗначений; ХарактерыАванса.Добавить(Перечисления.ХарактерВыплатыЗарплаты.Аванс); КонецПроцедуры &НаКлиенте Процедура Выгрузить(Команда) СозданиеФайлаДляВыгрузки(); КонецПроцедуры &НаСервере Процедура СозданиеФайлаДляВыгрузки() ИмяФайла="zp"+Формат(Период,"ДФ=yyyyMM")+".dbf"; ПутьКФайлуОбмена = ПолучитьИмяФайла("C:\ПробникОбр", ИмяФайла); ip="192.168.16.20"; port = 21; login = "ZP"; pass = "zp4512"; Если сзДок.Количество()=0 Тогда Текст = "ru = ""Необходимо заполнить таблицу документов !""; en = "" Please select document !"""; Сообщить(Текст); Возврат; //ИначеЕсли Не ПроверитьСуществованиеКаталога(КаталогВыгр) Тогда // Текст = "ru = ""Каталог не существует, выберите другой !""; en = ""Select an existing folder !"""; // Предупреждение(НСтр(Текст), 20); // Возврат; КонецЕсли; ДБ = Новый Xbase; ДБ.Кодировка = КодировкаXBase.ANSI; ДБ.поля.Добавить("METKA","S",1,); ДБ.Поля.Добавить("KOD","S",10,); ДБ.Поля.Добавить("FIO","S",80,); ДБ.Поля.Добавить("BANK","S",100,3); ДБ.Поля.Добавить("SUMMA","N",15,2); ДБ.Поля.Добавить("AVANS","N",10,0); //ФайлИПутьВыгрузки = КаталогВыгр+"zp"+Формат(ПериодРегистрации,"ДФ=yyyyMM")+".dbf"; ДБ.СоздатьФайл(ПутьКФайлуОбмена,); ДБ.АвтоСохранение =1; // создаем СЗ из помеченных эл-тов СЗ формы ///////////////////////////////////////////заполняем зарплату сзДокВыгр = сзДок.Скопировать(); СчК = сзДокВыгр.Количество(); Для СчН = 1 По СчК Цикл Если Не сзДокВыгр[СчК-СчН].Пометка Тогда Если НЕ ТипЗнч(сзДокВыгр[СчК-СчН]) = Тип("ДокументСсылка.ВедомостиНаВыплатуЗарплаты") Тогда сзДокВыгр.Удалить(СчК-СчН); КонецЕсли; КонецЕсли; КонецЦикла; //*****************************-----Заполнение файла для выгрузки-----********************************************** //***********----Заполнение зарплаты (метка в данных файла "N")----******************* Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВедомостиНаВыплатуЗарплаты.Сотрудники КАК ФИО, | ВедомостиНаВыплатуЗарплаты.Сумма КАК Сумма, | ВЫБОР | КОГДА ВедомостиНаВыплатуЗарплаты.СпособВыплаты В (&ХарактерыАванса) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ КАК ХарактерВыплаты, | ВедомостиНаВыплатуЗарплаты.МестоВыплаты.Ссылка КАК БАНК, | ВедомостиНаВыплатуЗарплаты.МестоВыплаты.Код КАК КодФЛ |ИЗ | ЖурналДокументов.ВедомостиНаВыплатуЗарплаты КАК ВедомостиНаВыплатуЗарплаты |ГДЕ | ВедомостиНаВыплатуЗарплаты.Ссылка В(&ВыбДокументы)"; Запрос.УстановитьПараметр("ВыбДокументы", сзДокВыгр); // Запрос.УстановитьПараметр("ХарактерыЗарплаты", ХарактерыЗарплаты); Запрос.УстановитьПараметр("ХарактерыАванса", ХарактерыАванса); тзРезультат = Запрос.Выполнить().Выгрузить(); //тзРезультат.Свернуть("ФИО,ХарактерВыплаты,","Сумма"); тзРезультат.Свернуть("КодФЛ,ФИО,ХарактерВыплаты,БАНК","Сумма"); тзРезультат.Сортировать("ФИО,ХарактерВыплаты"); тзРезультат.Сортировать("ФИО,КодФЛ,ХарактерВыплаты"); Для Каждого стрТЗ Из тзРезультат Цикл Если СокрЛП(стрТЗ.БАНК) <> "" Тогда ДБ.Добавить(); ДБ.METKA = "N"; ДБ.KOD = стрТЗ.КодФЛ; ДБ.FIO = стрТЗ.ФИО; ДБ.SUMMA = стрТЗ.Сумма; ДБ.AVANS = стрТЗ.ХарактерВыплаты; ДБ.BANK = стрТЗ.БАНК; ДБ.Записать(); КонецЕсли; КонецЦикла; //******************************---******************************************* КонецПроцедуры |
|||
1
Nemirov
20.03.20
✎
16:41
|
Перем ХарактерыЗарплаты;
Перем ХарактерыАванса; #Область События // Процедура - обработчик события "ПриОткрытии" поля ввода периода . // &НаКлиенте Процедура ПриОткрытии() Флажок1 = Истина; Флажок2 = Истина; Флажок3 = Истина; Флажок4 = Истина; НазначениеПеречислений(); КонецПроцедуры // Процедура - обработчик события "ПриИзменении" поля ввода периода. // Из общих модулей берется процедура где представление периода приводится к нужному виду, а именно "дата как месяц". // &НаКлиенте Процедура ПериодРегистрацииПриИзменении(Элемент) ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(ЭтаФорма, "Период", "Месяц", Модифицированность); КонецПроцедуры // Процедура - обработчик события "ПериодРегистрацииНачалоВыбора" поля ввода периода. // // &НаКлиенте Процедура ПериодРегистрацииНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтаФорма,ЭтаФорма, "Период", "Месяц", Модифицированность); КонецПроцедуры // Процедура - обработчик события "ПериодРегистрацииРегулирование" поля ввода периода. // // &НаКлиенте Процедура ПериодРегистрацииРегулирование(Элемент, Направление, СтандартнаяОбработка) ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(ЭтаФорма, "Период", "Месяц", Направление, Модифицированность); КонецПроцедуры // Процедура - обработчик события "ПериодРегистрацииАвтоПодбор" поля ввода периода. // // &НаКлиенте Процедура ПериодРегистрацииАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка); КонецПроцедуры // Процедура - обработчик события "ПериодРегистрацииОкончаниеВводаТекста" поля ввода периода. // // &НаКлиенте Процедура ПериодРегистрацииОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка) ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка); КонецПроцедуры #КонецОбласти &НаСервереБезКонтекста Процедура НазначениеПеречислений() ХарактерыЗарплаты = Новый СписокЗначений; ХарактерыЗарплаты.Добавить(Перечисления.ХарактерВыплатыЗарплаты.Зарплата); ХарактерыАванса = Новый СписокЗначений; ХарактерыАванса.Добавить(Перечисления.ХарактерВыплатыЗарплаты.Аванс); КонецПроцедуры &НаКлиенте Функция ПроверитьСуществованиеКаталога(ИмяКаталога) Экспорт КаталогНаДиске = Новый Файл(ИмяКаталога); Если КаталогНаДиске.Существует() Тогда Возврат Истина; Иначе //Ответ = Вопрос("Каталог не существует. Создать?", // РежимДиалогаВопрос.ОКОтмена); //Если Ответ = КодВозвратаДиалога.ОК Тогда // СоздатьКаталог(ИмяКаталога); // Возврат Истина; //Иначе Возврат Ложь; //КонецЕсли; КонецЕсли; КонецФункции &НаСервере Функция ПолучитьИмяФайла(ИмяКаталога, ИмяФайла) Экспорт Если Не ПустаяСтрока(ИмяФайла) Тогда Возврат ИмяКаталога + ?(Прав(ИмяКаталога, 1) = "\", "", "\") + ИмяФайла; Иначе Возврат ИмяКаталога; КонецЕсли; КонецФункции &НаСервере Процедура СозданиеФайлаДляВыгрузки() ИмяФайла="zp"+Формат(Период,"ДФ=yyyyMM")+".dbf"; ПутьКФайлуОбмена = ПолучитьИмяФайла("C:\ПробникОбр", ИмяФайла); ip="192.168.16.20"; port = 21; login = "ZP"; pass = "zp4512"; Если сзДок.Количество()=0 Тогда Текст = "ru = ""Необходимо заполнить таблицу документов !""; en = "" Please select document !"""; Сообщить(Текст); Возврат; //ИначеЕсли Не ПроверитьСуществованиеКаталога(КаталогВыгр) Тогда // Текст = "ru = ""Каталог не существует, выберите другой !""; en = ""Select an existing folder !"""; // Предупреждение(НСтр(Текст), 20); // Возврат; КонецЕсли; ДБ = Новый Xbase; ДБ.Кодировка = КодировкаXBase.ANSI; ДБ.поля.Добавить("METKA","S",1,); ДБ.Поля.Добавить("KOD","S",10,); ДБ.Поля.Добавить("FIO","S",80,); ДБ.Поля.Добавить("BANK","S",100,3); ДБ.Поля.Добавить("SUMMA","N",15,2); ДБ.Поля.Добавить("AVANS","N",10,0); //ФайлИПутьВыгрузки = КаталогВыгр+"zp"+Формат(ПериодРегистрации,"ДФ=yyyyMM")+".dbf"; ДБ.СоздатьФайл(ПутьКФайлуОбмена,); ДБ.АвтоСохранение =1; // создаем СЗ из помеченных эл-тов СЗ формы ///////////////////////////////////////////заполняем зарплату сзДокВыгр = сзДок.Скопировать(); СчК = сзДокВыгр.Количество(); Для СчН = 1 По СчК Цикл Если Не сзДокВыгр[СчК-СчН].Пометка Тогда Если НЕ ТипЗнч(сзДокВыгр[СчК-СчН]) = Тип("ДокументСсылка.ВедомостиНаВыплатуЗарплаты") Тогда сзДокВыгр.Удалить(СчК-СчН); КонецЕсли; КонецЕсли; КонецЦикла; //*****************************-----Заполнение файла для выгрузки-----********************************************** //***********----Заполнение зарплаты (метка в данных файла "N")----******************* Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВедомостиНаВыплатуЗарплаты.Сотрудники КАК ФИО, | ВедомостиНаВыплатуЗарплаты.Сумма КАК Сумма, | ВЫБОР | КОГДА ВедомостиНаВыплатуЗарплаты.СпособВыплаты В (&ХарактерыАванса) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ КАК ХарактерВыплаты, | ВедомостиНаВыплатуЗарплаты.МестоВыплаты.Ссылка КАК БАНК, | ВедомостиНаВыплатуЗарплаты.МестоВыплаты.Код КАК КодФЛ |ИЗ | ЖурналДокументов.ВедомостиНаВыплатуЗарплаты КАК ВедомостиНаВыплатуЗарплаты |ГДЕ | ВедомостиНаВыплатуЗарплаты.Ссылка В(&ВыбДокументы)"; Запрос.УстановитьПараметр("ВыбДокументы", сзДокВыгр); // Запрос.УстановитьПараметр("ХарактерыЗарплаты", ХарактерыЗарплаты); Запрос.УстановитьПараметр("ХарактерыАванса", ХарактерыАванса); тзРезультат = Запрос.Выполнить().Выгрузить(); //тзРезультат.Свернуть("ФИО,ХарактерВыплаты,","Сумма"); тзРезультат.Свернуть("КодФЛ,ФИО,ХарактерВыплаты,БАНК","Сумма"); тзРезультат.Сортировать("ФИО,ХарактерВыплаты"); тзРезультат.Сортировать("ФИО,КодФЛ,ХарактерВыплаты"); Для Каждого стрТЗ Из тзРезультат Цикл Если СокрЛП(стрТЗ.БАНК) <> "" Тогда ДБ.Добавить(); ДБ.METKA = "N"; ДБ.KOD = стрТЗ.КодФЛ; ДБ.FIO = стрТЗ.ФИО; ДБ.SUMMA = стрТЗ.Сумма; ДБ.AVANS = стрТЗ.ХарактерВыплаты; ДБ.BANK = стрТЗ.БАНК; ДБ.Записать(); КонецЕсли; КонецЦикла; //******************************---******************************************* //******************----заполняем отпуск ---(метка в данных файла "О")----********************************** сзДокВыгр.Очистить(); сзДокВыгр = сзДок.Скопировать(); СчК = сзДокВыгр.Количество(); Для СчН = 1 По СчК Цикл Если Не сзДокВыгр[СчК-СчН].Пометка Тогда Если НЕ ТипЗнч(сзДокВыгр[СчК-СчН]) = Тип("ДокументСсылка.НачислениеОтпускаРаботникамОрганизаций") Тогда сзДокВыгр.Удалить(СчК-СчН); КонецЕсли; КонецЕсли; КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Отпуск.ФизическоеЛицо.Код КАК КодФЛ, | Отпуск.ФизическоеЛицо.Наименование КАК ФИО, | Отпуск.Начисления.( | СУММА(Результат) | ) КАК СУММА |ИЗ | Документ.Отпуск КАК Отпуск |ГДЕ | Отпуск.Ссылка В(&ВыбДокументы)"; Запрос.УстановитьПараметр("ВыбДокументы", сзДокВыгр); тзРезультат = Запрос.Выполнить().Выгрузить(); Для Каждого стрТЗ Из тзРезультат Цикл СуммаВыплаты = 0; Для Каждого Строка Из стрТЗ.Сумма Цикл СуммаВыплаты = СуммаВыплаты + Строка.Результат; КонецЦикла; ДБ.Добавить(); ДБ.METKA = "O"; ДБ.KOD = стрТЗ.КодФЛ; ДБ.FIO = стрТЗ.ФИО; ДБ.SUMMA = СуммаВыплаты; ДБ.Записать(); КонецЦикла; //*******************************----****************************************** //********************----заполняем больничный----(метка данных файла "В")----******************************** сзДокВыгр.Очистить(); сзДокВыгр = сзДок.Скопировать(); СчК = сзДокВыгр.Количество(); Для СчН = 1 По СчК Цикл Если Не сзДокВыгр[СчК-СчН].Пометка Тогда Если НЕ ТипЗнч(сзДокВыгр[СчК-СчН]) = Тип("ДокументСсылка.БольничныйЛист") Тогда сзДокВыгр.Удалить(СчК-СчН); КонецЕсли; КонецЕсли; КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | БольничныйЛист.ФизическоеЛицо.Код КАК КодФЛ, | БольничныйЛист.ФизическоеЛицо.Наименование КАК ФИО, | БольничныйЛист.Начисления.( | СУММА(Результат) | ) КАК СУММА |ИЗ | Документ.БольничныйЛист КАК БольничныйЛист |ГДЕ | БольничныйЛист.Ссылка В(&ВыбДокументы)"; Запрос.УстановитьПараметр("ВыбДокументы", сзДокВыгр); тзРезультат = Запрос.Выполнить().Выгрузить(); Для Каждого стрТЗ Из тзРезультат Цикл СуммаВыплаты = 0; Для Каждого Строка Из стрТЗ.Сумма Цикл СуммаВыплаты = СуммаВыплаты + Строка.Результат; КонецЦикла; ДБ.Добавить(); ДБ.METKA = "B"; ДБ.KOD = стрТЗ.КодФЛ; ДБ.FIO = стрТЗ.ФИО; ДБ.SUMMA = СуммаВыплаты; ДБ.Записать(); КонецЦикла; //*************************----******************************** //**********************----Начисление удержаний--(метка в данных файла "U")----******************* Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НачислениеЗарплатыУдержания.ФизическоеЛицо.Код КАК КодФЛ, | НачислениеЗарплатыУдержания.ФизическоеЛицо.Наименование КАК ФИО, | СУММА(НачислениеЗарплатыУдержания.Результат) КАК Результат |ИЗ | Документ.НачислениеЗарплаты.Удержания КАК НачислениеЗарплатыУдержания |ГДЕ | НачислениеЗарплатыУдержания.Ссылка В(&ВыбДокументы) | |СГРУППИРОВАТЬ ПО | НачислениеЗарплатыУдержания.ФизическоеЛицо.Код, | НачислениеЗарплатыУдержания.ФизическоеЛицо.Наименование"; Запрос.УстановитьПараметр("ВыбДокументы", сзДокВыгр); тзРезультат = Запрос.Выполнить().Выгрузить(); //тзРезультат.Свернуть("КодФЛ,ФИО,","Сумма"); //тзРезультат.Сортировать("ФИО,КодФЛ"); Для Каждого стрТЗ Из тзРезультат Цикл //СуммаВыплаты = 0; //Для Каждого Строка Из стрТЗ.Сумма Цикл // СуммаВыплаты = СуммаВыплаты + Строка.Результат; //КонецЦикла; Если НЕ стрТЗ.Результат = 0 Тогда ДБ.Добавить(); ДБ.METKA = "U"; ДБ.KOD = стрТЗ.КодФЛ; ДБ.FIO = стрТЗ.ФИО; ДБ.SUMMA = стрТЗ.Результат; ДБ.Записать(); КонецЕсли; КонецЦикла; //******************************************************************************* ДБ.Записать(); ДБ.ЗакрытьФайл(); //Если ОтправкаFTP(ПутьКФайлуОбмена, IP, port, login, pass, ИмяФайла) = 1 Тогда // Сообщить("Файлы отправленны. Ошибок нет."); //КонецЕсли; //12.05.2015 ОтправитьСтаж(); //12.05.2015 Текст = "ru = ""Выгрузка завершена""; en = ""Job's done !"""; Сообщить(Текст); КонецПроцедуры &НаКлиенте Процедура Выгрузить(Команда) СозданиеФайлаДляВыгрузки(); КонецПроцедуры &НаСервере Процедура РелоадНажатие() сзДок.Очистить(); Если Флажок1 Тогда //зарплата Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВедомостиНаВыплатуЗарплаты.ПериодРегистрации КАК ПериодРегистрации, | ВедомостиНаВыплатуЗарплаты.СпособВыплаты КАК ХарактерВыплаты, | ВедомостиНаВыплатуЗарплаты.Ссылка КАК ДокВыплаты |ИЗ | ЖурналДокументов.ВедомостиНаВыплатуЗарплаты КАК ВедомостиНаВыплатуЗарплаты |ГДЕ | ВедомостиНаВыплатуЗарплаты.ПериодРегистрации = &ПериодВыгрузки | И (ВедомостиНаВыплатуЗарплаты.СпособВыплаты.ХарактерВыплаты В (&ХарактерыЗарплаты) | ИЛИ ВедомостиНаВыплатуЗарплаты.СпособВыплаты.ХарактерВыплаты В (&ХарактерыАванса)) | И ВедомостиНаВыплатуЗарплаты.Проведен = ИСТИНА //| И ВедомостиНаВыплатуЗарплаты.СпособВыплаты = &СпособВыплаты | |УПОРЯДОЧИТЬ ПО | ВедомостиНаВыплатуЗарплаты.Дата, | ВедомостиНаВыплатуЗарплаты.Номер"; Запрос.УстановитьПараметр("ХарактерыЗарплаты", ХарактерыЗарплаты); Запрос.УстановитьПараметр("ХарактерыАванса", ХарактерыАванса); Запрос.УстановитьПараметр("ПериодВыгрузки", Период); //Запрос.УстановитьПараметр("СпособВыплаты", Перечисления.СпособыВыплатыЗарплаты.ЧерезБанк); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл сзДок.Добавить(Выборка.ДокВыплаты,,Истина) КонецЦикла; КонецЕсли; Если Флажок2 Тогда //отпускные Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Отпуск.Ссылка КАК Отпуск, | Отпуск.ПериодРегистрации КАК ПериодРегистрации |ИЗ | Документ.Отпуск КАК Отпуск |ГДЕ | Отпуск.ПериодРегистрации = &ПериодВыгрузки"; Запрос.УстановитьПараметр("ПериодВыгрузки", Период); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл сзДок.Добавить(Выборка.Отпуск,,Истина) КонецЦикла; КонецЕсли; Если Флажок3 Тогда //больничные Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | БольничныйЛист.ПериодРегистрации, | БольничныйЛист.Ссылка КАК Больничный |ИЗ | Документ.БольничныйЛист КАК БольничныйЛист |ГДЕ | БольничныйЛист.ПериодРегистрации = &ПериодВыгрузки"; Запрос.УстановитьПараметр("ПериодВыгрузки", Период); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл сзДок.Добавить(Выборка.Больничный,,Истина) КонецЦикла; КонецЕсли; Если Флажок4 Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НачислениеЗарплатыНачисления.ПериодРегистрацииВремени КАК ПериодРегистрации, | НачислениеЗарплатыНачисления.Ссылка КАК Удержания |ИЗ | Документ.НачислениеЗарплаты.Начисления КАК НачислениеЗарплатыНачисления |ГДЕ | НачислениеЗарплатыНачисления.ПериодРегистрацииВремени = &ПериодВыгрузки | И НачислениеЗарплатыНачисления.Ссылка.Проведен = ИСТИНА"; Запрос.УстановитьПараметр("ПериодВыгрузки", Период); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл сзДок.Добавить(Выборка.Удержания,,Истина) КонецЦикла; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Релоад(Команда) РелоадНажатие(); КонецПроцедуры &НаСервере Функция ОтправкаFTP(ИмяФайла, IP, port, login, pass, Имя) FTP = Новый FTPСоединение(IP, port, login, pass, , Истина); FTP.УстановитьТекущийКаталог("zp"); FTP.Записать(ИмяФайла, Имя); Возврат 1; КонецФункции //12.05.2015 &НаСервере Процедура ОтправитьСтаж() ИмяФайла="st"+Формат(Период,"ДФ=yyyyMM")+".dbf"; ПутьКФайлуОбмена = ПолучитьИмяФайла("C:\ПробникОбр", ИмяФайла); ip="192.168.16.20"; port = 21; login = "ZP"; pass = "zp4512"; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТекущиеКадровыеДанныеСотрудников.Сотрудник.Ссылка КАК Ссылка, | ТекущиеКадровыеДанныеСотрудников.Сотрудник.Код КАК Код, | ТекущиеКадровыеДанныеСотрудников.Сотрудник.Наименование КАК ФИО, | ТекущиеКадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема, | ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения |ИЗ | РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); ДБ = Новый Xbase; ДБ.Кодировка = КодировкаXBase.ANSI; ДБ.Поля.Добавить("KOD","S",10,); //код сотрудника ДБ.Поля.Добавить("FIO","S",80,); //фио сотрудника ДБ.Поля.Добавить("PRIEM","D"); //дата приема на работу ДБ.Поля.Добавить("UVOL","D"); //дата увольнения ДБ.Поля.Добавить("STAG","N",1,0); //стаж ДБ.СоздатьФайл(ПутьКФайлуОбмена,); ДБ.АвтоСохранение =1; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если НЕ ВыборкаДетальныеЗаписи.Ссылка.ЭтоГруппа Тогда Если (ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ДатаУвольнения)) ИЛИ (НЕ ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ДатаПриема)) Тогда Продолжить; КонецЕсли; ДБ.Добавить(); ДБ.KOD = ВыборкаДетальныеЗаписи.Код; ДБ.FIO = ВыборкаДетальныеЗаписи.ФИО; ДБ.PRIEM = ВыборкаДетальныеЗаписи.ДатаПриема; ДБ.UVOL = ВыборкаДетальныеЗаписи.ДатаУвольнения; Стаж = Цел(((ТекущаяДата() - ВыборкаДетальныеЗаписи.ДатаПриема)/(24*60*60)+1)/365); Если Стаж > 3 Тогда Стаж = 3; КонецЕсли; ДБ.STAG = Стаж; КонецЕсли; КонецЦикла; ДБ.Записать(); ДБ.ЗакрытьФайл(); //Если ОтправкаFTP(ПутьКФайлуОбмена, IP, port, login, pass, ИмяФайла) = 1 Тогда // Сообщить("Файлы со стажем сотрудников отправленны. Ошибок нет."); //КонецЕсли; КонецПроцедуры |
|||
2
SadrArt
20.03.20
✎
17:51
|
(0) "Представил не весь код"... и далее километр кода
не надо параметры оборачивать в список значений; не надо переменные описывать, по сути, с одним препоцессором, присваивать с другим, а устанавливать в параметры с третьим, по факту в параметры у тебя попадает Неопределено, и запрос выдает "0"; не надо в твоем случае вообще использовать параметры, а надо, или в самом тексте запроса прописать сравнение на ЗНАЧЕНИЕ(), или выводить в результат запроса СпособВыплаты и сравнивать с перечислением при обработке результата |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |