РабДата=Лев(СокрЛП(РабочаяДата),10); //НачПрошлогоМесяца=Лев(СокрЛП(НачалоМесяца(ДобавитьМесяц(РабочаяДата, -1 ))),10); НачПрошлогоМесяца=Лев(СокрЛП(НачалоМесяца(РабочаяДата)),10); НачМесяца=Лев(СокрЛП(НачалоМесяца(РабочаяДата)),10); МойЗапрос = " |S_elect SC172.DESCR, RG38027.SP38025, _1SJOURN.DOCNO, LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) AS DATADOC, SUM(RG38027.SP38026) AS Ost |FROM RG38027, SC172, _1SJOURN, DH38011 |WHERE (RG38027.SP38024 = SC172.ID) AND (CONVERT (DATETIME , RG38027.PERIOD) = CONVERT (DATETIME , '"+НачПрошлогоМесяца+"')) AND |(RG38027.SP38025 = _1SJOURN.IDDOC) AND (RG38027.SP38025 = DH38011.IDDOC) |AND (DH38011.SP38005 = ' 3Z ') |GROUP BY SC172.DESCR, RG38027.SP38025, _1SJOURN.DOCNO, _1SJOURN.DATE_TIME_IDDOC | |U_nion ALL | |S_elect SC172.DESCR, RA38027.SP38025, _1SJOURN.DOCNO, LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) AS DATADOC, SUM(RA38027.SP38026*(1-2*RA38027.DEBKRED)) AS Ost |FROM RA38027, SC172, _1SJOURN, DH38011 |WHERE (RA38027.SP38024 = SC172.ID) AND (RA38027.IDDOC=_1SJOURN.IDDOC) AND |(CONVERT (DATETIME , LEFT(_1SJOURN.DATE_TIME_IDDOC,8)) <= CONVERT (DATETIME , '"+РабДата+"')) AND |(CONVERT (DATETIME , LEFT(_1SJOURN.DATE_TIME_IDDOC,8)) > CONVERT (DATETIME , '"+НачМесяца+"')) AND |(RA38027.SP38025 = _1SJOURN.IDDOC) AND (RA38027.SP38025 = DH38011.IDDOC) |AND (DH38011.SP38005 = ' 3Z ') |GROUP BY SC172.DESCR, RA38027.SP38025, _1SJOURN.DOCNO, _1SJOURN.DATE_TIME_IDDOC |HAVING SUM(RA38027.SP38026*(1-2*RA38027.DEBKRED)) > 0 |ORDER BY SC172.DESCR"; Connection = Новый COMОбъект("ADODB.Connection"); //Connection.Provider = Провайдер; Connection.ConnectionString = мдСтрокаПодключения; //Сообщить(МойЗапрос); Попытка Connection.Open(); Исключение Сообщить("Подключение - bad!"); КонецПопытки; RS = Новый COMОбъект("ADODB.Recordset"); //RS.CursorType = 3; RS.Open(МойЗапрос, Connection ); ТЗ=Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("КонтрагентНаименование", ПолучитьОписаниеТиповС(50),"Контрагент",30); ТЗ.Колонки.Добавить("ИДДокумента", ПолучитьОписаниеТиповС(10)); ТЗ.Колонки.Добавить("НомерДок", ПолучитьОписаниеТиповС(10),"№ заявки",10); ТЗ.Колонки.Добавить("ДатаДок", ПолучитьОписаниеТиповС(10),"дата заявки",10); ТЗ.Колонки.Добавить("СуммаОстаток", ПолучитьОписаниеТиповЧ(10, 2),"Сумма",15); Пока RS.EOF() = 0 Цикл КонтрагентНаименование = RS.Fields("DESCR").Value; ИДДокумента = RS.Fields("SP38025").Value; НомерДок = RS.Fields("DOCNO").Value; ДатаДок = RS.Fields("DATADOC").Value; СуммаОстаток = Число(RS.Fields("Ost").Value); Если СуммаОстаток = 0 Тогда RS.MoveNext(); Продолжить; КонецЕсли; Стр=ТЗ.Добавить(); Стр.КонтрагентНаименование = КонтрагентНаименование; Стр.ИДДокумента = ИДДокумента; Стр.НомерДок = НомерДок; Стр.ДатаДок = Дата(ДатаДок); Стр.СуммаОстаток = СуммаОстаток; RS.MoveNext(); КонецЦикла;
рег=создатьобъект("Регистр.Обороты"); рег.ВыбратьДвижения(НачМесяца(ТекущаяДата())); Пока рег.ПолучитьДвижение()=1 Цикл Сообщить("Товар="+строка(рег.Товар)+ " склад="+строка(рег.Склад)+ " контрагент="+строка(рег.Контрагент)+ " кол-во="+рег.Количество + " сумма="+рег.Сумма); КонецЦикла;
//Функция подбирает окончание для возраста Функция СтрГода(Возраст) Остаток = Возраст%10; Если Остаток = 1 Тогда Стр = "год"; ИначеЕсли ((Остаток > 1) и (Остаток < 5)) Тогда Стр = "года"; Иначе Стр = "лет"; КонецЕсли; Возврат Стр; КонецФункции //Формируем дни рождения Сотрудников Процедура ДниРожденияСотрудников() ТекстДР=""; Именинники = СоздатьОбъект("СписокЗначений"); СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.ВыбратьЭлементы(); Пока СпрСотр.ПолучитьЭлемент()= 1 Цикл ТекЭлем = СпрСотр.ТекущийЭлемент(); Если ТекЭлем.ЭтоГруппа() = 0 Тогда Если ((ТекЭлем.Родитель <> "Уволенные")) Тогда ТекСотр = СпрСотр.ТекущийЭлемент(); Если (ПустоеЗначение(ТекСотр.СостояниеФизЛица.Получить(НачМесяца(ТекущаяДата()))) = 0) Тогда Если (ДатаМесяц(ТекСотр.ДатаРождения) = ДатаМесяц(ТекущаяДата())) Тогда Именинники.ДобавитьЗначение(ТекСотр); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Если Именинники.РазмерСписка() <> 0 Тогда ТекстДР=ТекстДР+" ********* СПИСОК ИМЕНИННИКОВ *********"+РазделительСтрок+" за месяц "+Формат(ТекущаяДата(),"ДММММ")+РазделительСтрок; ТекстДР=ТекстДР+"-----------------------------------------------------------------------------------------------------------------------------------------------"+РазделительСтрок; Для к = 1 по Именинники.РазмерСписка() Цикл Сотр = Именинники.ПолучитьЗначение(к); Возраст = (Число(ДатаГод(ТекущаяДата()))-Число(ДатаГод(Сотр.ДатаРождения))); РазницаДней = (Число(ДатаЧисло(Сотр.ДатаРождения))-Число(ДатаЧисло(ТекущаяДата()))); СтрГода = СтрГода(Возраст); Если (ДатаЧисло(Сотр.ДатаРождения) < ДатаЧисло(ТекущаяДата())) Тогда ТекстДР=ТекстДР+" "+Сотр+" "+Сотр.ДатаРождения+" уже исполнилось "+Возраст+" "+СтрГода+"!"+РазделительСтрок; Иначе Если (РазницаДней = 2) Тогда ТекстДР=ТекстДР+"ПОСЛЕЗАВТРА! "+Сотр+" послезавтра "+Сотр.ДатаРождения+" будет праздновать " + Возраст + "-й День Рождения!!!! "; ИначеЕсли (РазницаДней = 1) Тогда ТекстДР=ТекстДР+"ЗАВТРА! "+ Сотр + " будет отмечает свой " + Возраст + "-й День рождения!"; ИначеЕсли (РазницаДней = 0) Тогда ТекстДР=ТекстДР+"СЕГОДНЯ! "+ Сотр + " отмечает свой " + Возраст + "-й День рождения!"; КонецЕсли; ТекстДР=ТекстДР+" ( "+Сотр.Подразделение.Получить(ТекущаяДата())+" , "+Сотр.Должность.Получить(ТекущаяДата())+" )"+РазделительСтрок; КонецЕсли; КонецЦикла; Иначе ТекстДР=ТекстДР+"В текущем месяце именинников нет!"; КонецЕсли; Сообщить(ТекстДР); КонецПроцедуры