Функция СтрокаВМассив(Знач Стр, Разделитель, МинимальноЭлементов=0) Экспорт
мДанных = Новый Массив;
Поз = Найти(Стр,Разделитель);
Пока Поз<>0 Цикл
мДанных.Добавить(Лев(Стр,Поз-1));
Стр = Сред(Стр,Поз+1);
Поз = Найти(Стр,Разделитель);
КонецЦикла;
Если Стр<>"" Тогда
мДанных.Добавить(Стр);
КонецЕсли;
Пока мДанных.Количество()<МинимальноЭлементов Цикл
мДанных.Добавить("");
КонецЦикла;
Возврат мДанных;
КонецФункции
Функция ПараметрВТаблицу(Знач Параметр, МинимумКолонок=0) Экспорт
//В параметре приходит массив из эленемнов DHTML, примерно такой (разделители = перевод строки и табуляция):
//Doc000000001 checkbox <INPUT type=checkbox border=0 name=Doc000000001>
//Doc000000002 checkbox <INPUT CHECKED type=checkbox border=0 name=Doc000000002> 1
//Doc000000003 checkbox <INPUT type=checkbox border=0 name=Doc000000003>
//accept button <INPUT id=Function type=button value=OK name=accept> OK
Т = Новый ТаблицаЗначений;
мСтрок = СтрокаВМассив(Параметр, Символы.ПС);
Для ИндексСтрок=0 По мСтрок.ВГраница() Цикл
мЗначений = СтрокаВМассив(мСтрок[ИндексСтрок], Символы.Таб, МинимумКолонок);
Пока Т.Колонки.Количество()<мЗначений.Количество() Цикл
Т.Колонки.Добавить("_"+СокрЛП(Т.Колонки.Количество()));
КонецЦикла;
СтрТ = Т.Добавить();
Для ИндексКолонок=0 По мЗначений.ВГраница() Цикл
СтрТ[ИндексКолонок] = мЗначений[ИндексКолонок];
КонецЦикла;
КонецЦикла;
Пока Т.Колонки.Количество()<МинимумКолонок Цикл
Т.Колонки.Добавить();
КонецЦикла;
Возврат Т;
КонецФункции
Функция ПолучитьТаблицуДокументов() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Бюджет.Ссылка,
| Бюджет.ВерсияДанных,
| Бюджет.ПометкаУдаления,
| Бюджет.Номер,
| Бюджет.Дата КАК Дата,
| Бюджет.Проведен,
| Бюджет.Кому,
| Бюджет.ОтКого,
| Бюджет.Утвержден,
| Бюджет.Сумма,
| Бюджет.Комментарий
|ИЗ
| Документ.Бюджет КАК Бюджет
|ГДЕ
| Бюджет.Кому = &Кому
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Запрос.УстановитьПараметр("Кому",ИмяПользователя());
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Функция PopUpБюджетыНаСервере(Параметр="") Экспорт
ТД = ПолучитьТаблицуДокументов();
//выводим таблицу
Стр = "<img src='IMG\documents.png'><br><br>"+Символы.ПС;
Стр = Стр + "<font color=de4d4d><b>Документы на акцепт:</font></b><br><br>"+Символы.ПС;
Стр = Стр + "<table bgcolor=#ffffff cellSpacing='0' cellPadding='5' border='0'>"+Символы.ПС;
Стр = Стр + "<tr bgcolor=#ffffff><td><b>Документ</b></td><td><b>От кого</b></td><td><b>Сумма</b></td><td><b>Комментарий</b></td><td><b>Утвердить</b></td></tr>"+Символы.ПС;
Для Каждого СтрТД Из ТД Цикл
ЧетнаяСтрока = ТД.Индекс(СтрТД)%2;
checked = ?(СтрТД.Утвержден," checked","");
Стр = Стр + "<tr bgcolor="""+?(ЧетнаяСтрока,"#ffffff","#f0f0f0")+""">
|<td>"+СокрЛП(СтрТД.Ссылка)+"</td>
|<td>"+СокрЛП(СтрТД.ОтКого)+"</td>
|<td>"+Формат(СтрТД.Сумма,"ЧДЦ=2")+"</td>
|<td>"+СокрЛП(СтрТД.Комментарий)+"</td>
|<td><div><input border=0 class='checkbox0' bgcolor=#ffffff type='checkbox' name='Doc"+СтрТД.Номер+"'"+checked+"></div></td>
|</tr>"+Символы.ПС;
КонецЦикла;
//добавляем кнопку OK в последнюю строку
Сообщение = "Покупайте наших слонов...";
Стр = Стр + "<tr bgcolor=#ffffff><td colspan='4'><marquee scrollamount='3'>"+Сообщение+"</marquee></td><td> <input id='Procedure' name='PopUpУтвердить' value='OK' type='Button'> </td></tr>"+Символы.ПС;
Стр = Стр + "</table>"+Символы.ПС;
Стр = Стр + "<br><br><i>Проставьте утвержденные бюджеты и нажмите ОК. Данные в базе изменятся.</i>"+Символы.ПС;
//Возврат СокрЛП(ТекущаяДата())+"<br><br>"+Символы.ПС+Стр;
Возврат Стр;
КонецФункции
Процедура PopUpУтвердитьНаСервере(Параметр="") Экспорт
//В параметре приходит массив из эленемнов DHTML, примерно такой (разделители = перевод строки и табуляция):
//Doc000000001 checkbox <INPUT type=checkbox border=0 name=Doc000000001>
//Doc000000002 checkbox <INPUT CHECKED type=checkbox border=0 name=Doc000000002> 1
//Doc000000003 checkbox <INPUT type=checkbox border=0 name=Doc000000003>
//accept button <INPUT id=Function type=button value=OK name=accept> OK
ТП = PopUp1CНаСервере.ПараметрВТаблицу(Параметр, 4);
ТД = PopUp1CНаСервере.ПолучитьТаблицуДокументов();
Для Каждого СтрТП Из ТП Цикл
Если НРег(СтрТП[1])="checkbox" Тогда
СтрТД = ТД.Найти(Сред(СтрТП[0],4),"Номер");
Если СтрТД<>Неопределено Тогда
Утвержден = ?(СокрЛП(СтрТП[3])="1",Истина,Ложь);
Если Утвержден<>СтрТД.Утвержден Тогда
Док = СтрТД.Ссылка.ПолучитьОбъект();
Док.Утвержден = Утвержден;
Если Не Док.Проведен Тогда
Док.Записать(РежимЗаписиДокумента.Запись);
Иначе
Док.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция PopUpКалькуляторНаСервере(Параметр="", ПредыдущаяСтрока="", СтрокаРезультат = "") Экспорт
Стр = "<img src='IMG\calc.png'><br><br>"+Символы.ПС;
Если СтрокаРезультат<>"" Тогда
Стр = Стр + СтрокаРезультат+"<br><br>";
КонецЕсли;
Стр = Стр + "Что посчитать: ";
Стр = Стр + "<input name='TextCalc' type='Text' border='3' value='"+ПредыдущаяСтрока+"'>";
//добавляем кнопку OK
Стр = Стр + "<input id='Function' name='PopUpCalc' value='OK' type='Button'>"+Символы.ПС;
Стр = Стр + "<br><br><i>Введите любую формулу и нажмите ОК. 1С выполнит вычисление и вернет результат или ошибку.</i>"+Символы.ПС;
Возврат Стр;
КонецФункции
Функция PopUpCalcНаСервере(Параметр="") Экспорт
//В параметре приходит массив из эленемнов DHTML, примерно такой (разделители = перевод строки и табуляция):
//TextCalc text <INPUT value=10+15 border=3 name=TextCalc> 10+15
//PopUpCalc button <INPUT id=Function type=button value=OK name=PopUpCalc> OK
ТП = ПараметрВТаблицу(Параметр, 4);
СтрТП = ТП.Найти("TextCalc",ТП.Колонки[0].Имя);
ПредыдущаяСтрока = "";
Результат = "";
Если СтрТП<>Неопределено Тогда
ПредыдущаяСтрока = СтрТП[3];
Попытка
Результат = Вычислить(СтрТП[3]);
СтрокаРезультат = "<font color='#4978af'><b>"+СокрЛП(СтрТП[3])+" = "+СокрЛП(Результат)+"</b></font>";
Исключение
Результат = ОписаниеОшибки();
СтрокаРезультат = "<font color='#f97e7e'><b>"+СокрЛП(СтрТП[3])+" = "+СокрЛП(Результат)+"</b></font>";
КонецПопытки;
КонецЕсли;
Возврат PopUpКалькулятор(Параметр, ПредыдущаяСтрока, СтрокаРезультат);
КонецФункции
|