|
Отладка внешних обработок. | ☑ | ||
---|---|---|---|---|
0
XiPyPg2012
30.10.13
✎
10:32
|
Подскажите можно как нибудь попасть в обработку зная ее адрес во временном хранилище?
Обработка заполнения таб.части. |
|||
1
Wobland
30.10.13
✎
10:34
|
можно во временный каталог попасть
|
|||
2
XiPyPg2012
30.10.13
✎
10:35
|
а как ??
|
|||
3
Wobland
30.10.13
✎
10:37
|
обычно это %TEMP%
|
|||
4
XiPyPg2012
30.10.13
✎
10:39
|
короче смысл такой что мне над попасть в точку останову этой обработки ))
|
|||
5
Wobland
30.10.13
✎
10:40
|
(4) не знал, что она в темп сохраняется перед исполнением?
|
|||
6
golden-pack
30.10.13
✎
10:40
|
(5) вот код типовой
ИмяФайла = ПолучитьИмяВременногоФайла(); СпрВнешняяОбработка = Справочники.ВнешниеОбработки.НайтиПоКоду("000000184"); ДвоичныеДанные = СпрВнешняяОбработка.ХранилищеВнешнейОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); ВнешняяОбработка = ВнешниеОтчеты.Создать(ИмяФайла); |
|||
7
golden-pack
30.10.13
✎
10:41
|
(6) не совсем типовой ))) но суть ясна
|
|||
8
XiPyPg2012
30.10.13
✎
10:41
|
я ее запускаю с помощью http://infostart.ru/public/141765/?rate=1 вот этой обработки но как должно быть у меня не заходит в нее
|
|||
9
Ofizer
30.10.13
✎
10:41
|
(0) а зачем так извращаться?
лучше сохранить ее на диск, да отлаживаться спокойно, только в этом случае, в процедуру "Инициализировать(Ссылка, ИмяТабличнойЧасти = Неопределено, ТабличноеПолеОбъекта = Неопределено)" передается ссылка, нужно получить "объект" |
|||
10
Wobland
30.10.13
✎
10:41
|
(6) >НайтиПоКоду("000000184")
типовой?? |
|||
11
golden-pack
30.10.13
✎
10:42
|
(10) быдлкодинг детектед )))
|
|||
12
XiPyPg2012
30.10.13
✎
10:42
|
(9) у меня процедуры инициализировать нету
|
|||
13
Холодильник
30.10.13
✎
10:43
|
извращенцы.
сделай намеренно ошибку и запускай отладку с остановкой по ошибке. 1С сама откроет временный файл |
|||
14
Ofizer
30.10.13
✎
10:44
|
(12) тогда обработка не должна запускаться
(13) +1 |
|||
15
XiPyPg2012
30.10.13
✎
10:46
|
(14) могу скинуть код и увидишь что все арбайтен
|
|||
16
hhhh
30.10.13
✎
10:47
|
(12) найди этот код, который в (6) в общем модуле. И там точку останова поставь. И отлаживайся сколько хочешь.
|
|||
17
Wobland
30.10.13
✎
10:48
|
(15) кидай
|
|||
18
XiPyPg2012
30.10.13
✎
10:49
|
&НаКлиенте
Перем КэшированныеЗначения; &НаСервере Процедура ЗагрузитьДанныеКлиент(МассивЗаказов) ПоказыватьСостояниеВыполнения = Истина; HTTPСоединение = Новый HTTPСоединение("parts.deere.com", , ИмяПользователя, Пароль, , Истина); ТекстЗапросаSOAP = "<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""> |<soap:Header/> |<soap:Body> <m:getPartInformation xmlns:m=""http://v1_3.partinfo.services.view.jdpoint.parts.deere.com""> |<userId xmlns="""" | xmlns:xs=""http://www.w3.org/2001/XMLSchema"" | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">%ИмяПользователя%</userId> |<accountId xmlns="""" | xmlns:xs=""http://www.w3.org/2001/XMLSchema"" | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">%ИмяАккаунта%</accountId> |<partNumber xmlns="""" | xmlns:xs=""http://www.w3.org/2001/XMLSchema"" | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">%PartNumber%</partNumber> |</m:getPartInformation></soap:Body> |</soap:Envelope>"; ТекстЗапросаSOAP = СтрЗаменить(ТекстЗапросаSOAP, "%ИмяПользователя%", ИмяПользователя); ТекстЗапросаSOAP = СтрЗаменить(ТекстЗапросаSOAP, "%ИмяАккаунта%", ИмяАккаунта); Заголовки = Новый Соответствие; Заголовки.Вставить("SOAPAction: """"getPartInformation"""""); HTTPЗапрос = Новый HTTPЗапрос("/dns/services/PartInfoWS_1_3", Заголовки); Для каждого ДанныеЗаказа Из МассивЗаказов Цикл МассивСтрокИзЗаказа = ДанныеЗаказа.МассивСтрокИзЗаказа; РезультатЗапроса = ""; ОбработаноСтрок = 0; КоличествоСтрок = МассивСтрокИзЗаказа.Количество(); Для каждого ДанныеСтроки Из МассивСтрокИзЗаказа Цикл ЗаполнитьСтруктуруДанных(HTTPСоединение, HTTPЗапрос, ТекстЗапросаSOAP, ДанныеСтроки); Если ПоказыватьСостояниеВыполнения Тогда ОбработаноСтрок = ОбработаноСтрок + 1; Прогресс = Окр(100 * ОбработаноСтрок / КоличествоСтрок, 0); //<< Горбенко В.В. //Состояние("Получение данных от веб-сервиса.", Прогресс); //>> КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры // ЗагрузитьДанныеКлиент() &НаСервере Процедура ЗаполнитьСтруктуруДанных(HTTPСоединение, HTTPЗапрос, ТекстЗапросаSOAP, СтруктураДанных) SOAPЗапрос = СтрЗаменить(ТекстЗапросаSOAP, "%PartNumber%", СтруктураДанных.PartNumber); HTTPЗапрос.УстановитьТелоИзСтроки(SOAPЗапрос); Попытка HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); Исключение Сообщить("Не удалось получить ответ от веб-сервиса: " + ОписаниеОшибки()); Возврат; КонецПопытки; ТекстОтвета = HTTPОтвет.ПолучитьТелоКакСтроку(); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ТекстОтвета); ЧтениеXML.Прочитать(); Данные = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); ТелоСообщения = Данные.Body.getPartInformationResponse.getPartInformationReturn; Попытка СтруктураДанных.MDQTY = Число(ТелоСообщения.inventoryBalances.inventoryLocations.InventoryLocation.emergencyBalance); Исключение СтруктураДанных.MDQTY = 0; КонецПопытки; Попытка СтруктураДанных.SOQTY = Число(ТелоСообщения.inventoryBalances.stockOrderBalance); СтруктураДанных.PackageQTY = Число(ТелоСообщения.packageQuantity); Исключение СтруктураДанных.SOQTY = 0; СтруктураДанных.PackageQTY = 0; КонецПопытки; КонецПроцедуры // ЗаполнитьСтруктуруДанных() &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) МассивСсылок = Неопределено; Параметры.Свойство("ОбъектыНазначения", МассивСсылок); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказПоставщикуТовары.Номенклатура КАК Part, | ЗаказПоставщикуТовары.Номенклатура.Артикул КАК PartNumber, | СУММА(ЗаказПоставщикуТовары.Количество) КАК OrderQTY, | 0 КАК PackageQTY, | 0 КАК MDQTY, | 0 КАК SOQTY, | ЗаказПоставщикуТовары.Ссылка КАК Заказ, | ВЫБОР | КОГДА ЗаказПоставщикуТовары.Характеристика = &ХарактеристикаSO | ТОГДА ""SO"" | КОГДА ЗаказПоставщикуТовары.Характеристика = &ХарактеристикаMD | ТОГДА ""MD"" | ИНАЧЕ ""None"" | КОНЕЦ КАК OrderType, | ЗаказПоставщикуТовары.Ссылка.Склад КАК Склад, | ВЫБОР | КОГДА ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля)) = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика) | ТОГДА ВЫБОР | КОГДА НЕ НастройкаХарактеристика.ВариантКонтроля ЕСТЬ NULL | ТОГДА ВЫБОР | КОГДА НастройкаХарактеристика.ГраницаГрафикаДоступности >= &ТекущаяДата | ТОГДА НастройкаХарактеристика.ГраницаГрафикаДоступности | КОГДА НастройкаХарактеристика.СрокПоставки > 0 | ТОГДА ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, НастройкаХарактеристика.СрокПоставки) | ИНАЧЕ ДАТАВРЕМЯ(2399, 1, 1) | КОНЕЦ | КОГДА НЕ НастройкаНоменклатура.ВариантКонтроля ЕСТЬ NULL | ТОГДА ВЫБОР | КОГДА НастройкаНоменклатура.ГраницаГрафикаДоступности >= &ТекущаяДата | ТОГДА НастройкаНоменклатура.ГраницаГрафикаДоступности | КОГДА НастройкаНоменклатура.СрокПоставки > 0 | ТОГДА ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, НастройкаНоменклатура.СрокПоставки) | ИНАЧЕ ДАТАВРЕМЯ(2399, 1, 1) | КОНЕЦ | ИНАЧЕ ВЫБОР | КОГДА НастройкаСклад.ГраницаГрафикаДоступности >= &ТекущаяДата | ТОГДА НастройкаСклад.ГраницаГрафикаДоступности | КОГДА НастройкаСклад.СрокПоставки > 0 | ТОГДА ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, НастройкаСклад.СрокПоставки) | ИНАЧЕ ДАТАВРЕМЯ(2399, 1, 1) | КОНЕЦ | КОНЕЦ | ИНАЧЕ ДАТАВРЕМЯ(2399, 1, 1) | КОНЕЦ КАК DateControl |ИЗ | Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаХарактеристика | ПО ЗаказПоставщикуТовары.Ссылка.Склад = НастройкаХарактеристика.Склад | И ЗаказПоставщикуТовары.Номенклатура = НастройкаХарактеристика.Номенклатура | И ЗаказПоставщикуТовары.Характеристика = НастройкаХарактеристика.Характеристика | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаНоменклатура | ПО ЗаказПоставщикуТовары.Ссылка.Склад = НастройкаНоменклатура.Склад | И ЗаказПоставщикуТовары.Номенклатура = НастройкаНоменклатура.Номенклатура | И (НастройкаНоменклатура.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) | И (НастройкаХарактеристика.Склад ЕСТЬ NULL ) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаКонтроляОстатков КАК НастройкаСклад | ПО ЗаказПоставщикуТовары.Ссылка.Склад = НастройкаСклад.Склад | И (НастройкаСклад.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) | И (НастройкаСклад.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) | И (НастройкаХарактеристика.Склад ЕСТЬ NULL ) | И (НастройкаНоменклатура.Склад ЕСТЬ NULL ) |ГДЕ | ЗаказПоставщикуТовары.Ссылка В(&МассивСсылок) | И ЗаказПоставщикуТовары.Характеристика В (&ХарактеристикаSO, &ХарактеристикаMD) | И НЕ ЗаказПоставщикуТовары.Отменено | |СГРУППИРОВАТЬ ПО | ЗаказПоставщикуТовары.Номенклатура, | ЗаказПоставщикуТовары.Номенклатура.Артикул, | ЗаказПоставщикуТовары.Ссылка, | ВЫБОР | КОГДА ЗаказПоставщикуТовары.Характеристика = &ХарактеристикаSO | ТОГДА ""SO"" | КОГДА ЗаказПоставщикуТовары.Характеристика = &ХарактеристикаMD | ТОГДА ""MD"" | ИНАЧЕ ""None"" | КОНЕЦ, | ЗаказПоставщикуТовары.Ссылка.Склад, | ВЫБОР | КОГДА ЕСТЬNULL(НастройкаХарактеристика.ВариантКонтроля, ЕСТЬNULL(НастройкаНоменклатура.ВариантКонтроля, НастройкаСклад.ВариантКонтроля)) = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроля.ОстаткиСУчетомГрафика) | ТОГДА ВЫБОР | КОГДА НЕ НастройкаХарактеристика.ВариантКонтроля ЕСТЬ NULL | ТОГДА ВЫБОР | КОГДА НастройкаХарактеристика.ГраницаГрафикаДоступности >= &ТекущаяДата | ТОГДА НастройкаХарактеристика.ГраницаГрафикаДоступности | КОГДА НастройкаХарактеристика.СрокПоставки > 0 | ТОГДА ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, НастройкаХарактеристика.СрокПоставки) | ИНАЧЕ ДАТАВРЕМЯ(2399, 1, 1) | КОНЕЦ | КОГДА НЕ НастройкаНоменклатура.ВариантКонтроля ЕСТЬ NULL | ТОГДА ВЫБОР | КОГДА НастройкаНоменклатура.ГраницаГрафикаДоступности >= &ТекущаяДата | ТОГДА НастройкаНоменклатура.ГраницаГрафикаДоступности | КОГДА НастройкаНоменклатура.СрокПоставки > 0 | ТОГДА ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, НастройкаНоменклатура.СрокПоставки) | ИНАЧЕ ДАТАВРЕМЯ(2399, 1, 1) | КОНЕЦ | ИНАЧЕ ВЫБОР | КОГДА НастройкаСклад.ГраницаГрафикаДоступности >= &ТекущаяДата | ТОГДА НастройкаСклад.ГраницаГрафикаДоступности | КОГДА НастройкаСклад.СрокПоставки > 0 | ТОГДА ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, НастройкаСклад.СрокПоставки) | ИНАЧЕ ДАТАВРЕМЯ(2399, 1, 1) | КОНЕЦ | КОНЕЦ | ИНАЧЕ ДАТАВРЕМЯ(2399, 1, 1) | КОНЕЦ |ИТОГИ | МАКСИМУМ(OrderType) |ПО | Заказ"; Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок); ХарактеристикаSO = Справочники.ХарактеристикиНоменклатуры.ПолучитьСсылку(Новый УникальныйИдентификатор("9d319838-6b39-11e0-9fde-00215e3f62b2")); Запрос.УстановитьПараметр("ХарактеристикаSO", ХарактеристикаSO); ХарактеристикаMD = Справочники.ХарактеристикиНоменклатуры.ПолучитьСсылку(Новый УникальныйИдентификатор("9d319839-6b39-11e0-9fde-00215e3f62b2")); Запрос.УстановитьПараметр("ХарактеристикаMD", ХарактеристикаMD); Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата()); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); МассивЗаказов = Новый Массив(); ВыборкаИтоги = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаИтоги.Следующий() Цикл МассивСтрокИзЗаказа = Новый Массив(); Выборка = ВыборкаИтоги.Выбрать(); Пока Выборка.Следующий() Цикл ДанныеСтроки = Новый Структура("DateControl, OrderType, Part, PartNumber, OrderQTY, PackageQTY, MDQTY, SOQTY"); ЗаполнитьЗначенияСвойств(ДанныеСтроки, Выборка); МассивСтрокИзЗаказа.Добавить(ДанныеСтроки); КонецЦикла; СтруктураЗаказа = Новый Структура("Заказ, ТипЗаказа, МассивСтрокИзЗаказа", ВыборкаИтоги.Заказ, ВыборкаИтоги.OrderType, МассивСтрокИзЗаказа); МассивЗаказов.Добавить(СтруктураЗаказа); КонецЦикла; АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(МассивЗаказов, УникальныйИдентификатор); ИмяАккаунта = "3R2CD2"; ИмяПользователя = "x644957"; Пароль = "vcxz4321"; ТекущаяДата = НачалоДня(ТекущаяДата()); ОсновнойКалендарьПредприятия = Константы.ОсновнойКалендарьПредприятия.Получить(); Дата45РабочихДнейОтТекущейДаты = КалендарныеГрафики.ПолучитьДатуПоКалендарю(ОсновнойКалендарьПредприятия, ТекущаяДата, 45); ТекущийДеньНедели = ДеньНедели(ТекущаяДата); ПериодЗаполненияЗаказаПонедельникЧетверг = (ТекущийДеньНедели <= 4); КоличествоДнейДоБлижайшегоВторника = 7 + 2 - ТекущийДеньНедели; //Если пятница или суббота или воскресенье, то берем вторник через неделю, иначе на следующей неделе ДатаПоступленияВНаличииSO = ТекущаяДата + 86400 * (КоличествоДнейДоБлижайшегоВторника + 7 * ?(ТекущийДеньНедели >= 5, 1, 0)); ДатаПоступленияНетВНаличииSO = Дата45РабочихДнейОтТекущейДаты; ДатаПоступленияВНаличииMD = ТекущаяДата + 86400 * 2; ДатаПоступленияНетВНаличииMD = ТекущаяДата + 86400 * 21; Если ДеньНедели(ДатаПоступленияВНаличииMD) = 7 Тогда ДатаПоступленияВНаличииMD = ДатаПоступленияВНаличииMD - 86400; КонецЕсли; Если ДеньНедели(ДатаПоступленияНетВНаличииMD) = 7 Тогда ДатаПоступленияНетВНаличииMD = ДатаПоступленияНетВНаличииMD - 86400; КонецЕсли; КонецПроцедуры // Возвращает структуру заполнения дубликатов зависимых реквизитов // // Возвращаемое значение: // Структура - // Ключ - Имя реквизита флага активности // Значение - Строка перечисления через запятую имен зависимых реквизитов // &НаКлиентеНаСервереБезКонтекста Функция ПолучитьСтруктуруЗависимыхРеквизитов() Возврат Новый Структура("Отменено", "Сумма, СуммаНДС, СуммаСНДС, СуммаРучнойСкидки"); КонецФункции &НаКлиенте Функция ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ДокументОбъект) СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(ДокументОбъект); СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц"); СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСумму"); СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь)); СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ПолучитьСтруктуруЗависимыхРеквизитов()); КонецФункции &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт Если ИдентификаторКоманды = "ЗаполнитьДатыПоступленияПоДаннымJD" Тогда МассивЗаказов = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище); ЗагрузитьДанныеКлиент(МассивЗаказов); СтруктураОтбора = Новый Структура("Номенклатура, Отменено", Неопределено, Ложь); Для каждого ДанныеЗаказа Из МассивЗаказов Цикл ОбъектНазначения = ДанныеЗаказа.Заказ; МассивСтрокИзЗаказа = ДанныеЗаказа.МассивСтрокИзЗаказа; ПараметрыФормы = Новый Структура("Ключ", ОбъектНазначения); Форма = ПолучитьФорму("Документ.ЗаказПоставщику.ФормаОбъекта", ПараметрыФормы); Если НЕ Форма.Открыта() Тогда Форма.Открыть(); КонецЕсли; ДокументОбъект = Форма.Объект; Товары = ДокументОбъект.Товары; ЕстьВНаличии = 0; Для каждого СтрокаЗаказа Из МассивСтрокИзЗаказа Цикл //Сообщить("СтрокаЗаказа.OrderType = " + СтрокаЗаказа.OrderType); Если СтрокаЗаказа.OrderType = "SO" Тогда ЕстьВНаличии = СтрокаЗаказа.SOQTY; ДатаПоступленияВНаличии = ДатаПоступленияВНаличииSO; ДатаПоступленияНетВНаличии = Мин(ДатаПоступленияНетВНаличииSO, СтрокаЗаказа.DateControl); ИначеЕсли СтрокаЗаказа.OrderType = "MD" Тогда ЕстьВНаличии = СтрокаЗаказа.MDQTY; ДатаПоступленияВНаличии = ДатаПоступленияВНаличииMD; ДатаПоступленияНетВНаличии = Мин(ДатаПоступленияНетВНаличииMD, СтрокаЗаказа.DateControl); Иначе Продолжить; КонецЕсли; СтруктураОтбора.Вставить("Номенклатура", СтрокаЗаказа.Part); НайденныеСтроки = Товары.НайтиСтроки(СтруктураОтбора); КоличествоДляЗаполнения = 0; Для каждого НайденнаяСтрока Из НайденныеСтроки Цикл //Есть в наличии Если ЕстьВНаличии >= НайденнаяСтрока.КоличествоУпаковок Тогда НайденнаяСтрока.ДатаПоступления = ДатаПоступленияВНаличии; КоличествоДляЗаполнения = НайденнаяСтрока.КоличествоУпаковок; //Есть часть в наличии ИначеЕсли ЕстьВНаличии > 0 И ЕстьВНаличии < НайденнаяСтрока.КоличествоУпаковок Тогда //Разбить строку НайденнаяСтрока.ДатаПоступления = ДатаПоступленияВНаличии; НоваяСтрока = Товары.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, НайденнаяСтрока); НайденнаяСтрока.КоличествоУпаковок = ЕстьВНаличии; НоваяСтрока.КоличествоУпаковок = НоваяСтрока.КоличествоУпаковок - ЕстьВНаличии; НоваяСтрока.ДатаПоступления = ДатаПоступленияНетВНаличии; НоваяСтрока.КодСтроки = 0; & |
|||
19
XiPyPg2012
30.10.13
✎
10:49
|
уже разобрался ошибка вот тут была - ТелоСообщения = Данные.Body.getPartInformationResponse.getPartInformationReturn;
но уже понял причину ) |
|||
20
Wobland
30.10.13
✎
10:50
|
(18) а теперь ходи в модуль обработки
|
|||
21
XiPyPg2012
30.10.13
✎
10:55
|
///////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ ОЖИДАНИЯ // Выполнить завершение текущего сеанса, если установлена блокировка соединений // с информационной базой. // Процедура КонтрольРежимаЗавершенияРаботыПользователей() Экспорт // Получим текущее значение параметров блокировки ТекущийРежим = СоединенияИБ.ПараметрыБлокировкиСеансов(); БлокировкаУстановлена = ТекущийРежим.Установлена; Если НЕ БлокировкаУстановлена Тогда Возврат; КонецЕсли; ВремяНачалаБлокировки = ТекущийРежим.Начало; ВремяОкончанияБлокировки = ТекущийРежим.Конец; ИнтервалПредупреждения = ТекущийРежим.ИнтервалОжиданияЗавершенияРаботыПользователей; ИнтервалЗакрытьСЗапросом = 0; ИнтервалЗакрытьБезЗапроса = - ИнтервалПредупреждения / 5; ИнтервалПрекратить = - ИнтервалПредупреждения / 2.5; ТекущийМомент = ТекущаяДата(); Если ВремяОкончанияБлокировки <> '00010101' И ТекущийМомент > ВремяОкончанияБлокировки Тогда Возврат; КонецЕсли; ТекстСообщения = СоединенияИБКлиентСервер.ИзвлечьСообщениеБлокировки(ТекущийРежим.Сообщение); Если НЕ ЗначениеЗаполнено(ВремяНачалаБлокировки) ИЛИ ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалПрекратить Тогда ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина; ЗавершитьРаботуСистемы(Истина, Истина); ИначеЕсли ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалЗакрытьБезЗапроса Тогда Предупреждение(НСтр("ru = 'Работа системы завершается.'"), 30); ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина; ЗавершитьРаботуСистемы(Ложь, Истина); ИначеЕсли ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалЗакрытьСЗапросом Тогда Предупреждение(НСтр("ru = 'Работа системы завершается.'"), 30); ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина; ЗавершитьРаботуСистемы(Истина, Истина); ИначеЕсли ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалПредупреждения Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Работа системы будет завершена в %1.'"), ВремяНачалаБлокировки); Предупреждение(ТекстСообщения, 30); КонецЕсли; КонецПроцедуры // Выполнить завершение активных сеансов, если превышено время ожидания, а затем // завершить текущий сеанс. // Процедура ЗавершитьРаботуПользователей() Экспорт // Получим текущее значение параметров блокировки ТекущийРежим = СоединенияИБ.ПараметрыБлокировкиСеансов(Истина); КоличествоСеансов = ТекущийРежим.КоличествоСеансов; Если КоличествоСеансов <= 1 Тогда // Отключены все пользователи, кроме текущего сеанса // В последнюю очередь завершается сеанс, запущенный с параметром "ЗавершитьРаботуПользователей". // Такой порядок отключений необходим для обновления конфигурации с помощью пакетного файла ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина; ЗавершитьРаботуСистемы(Ложь); Возврат; КонецЕсли; БлокировкаУстановлена = ТекущийРежим.Установлена; Если НЕ БлокировкаУстановлена Тогда Возврат; КонецЕсли; ВремяНачалаБлокировки = ТекущийРежим.Начало; ИнтервалОтключения = - ТекущийРежим.ИнтервалОжиданияЗавершенияРаботыПользователей; ТекущийМомент = ТекущаяДата(); ПринудительноеЗавершение = НЕ ЗначениеЗаполнено(ВремяНачалаБлокировки) ИЛИ ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалОтключения; Если НЕ ПринудительноеЗавершение Тогда ТекстСообщения = НСтр("ru = 'Активных сеансов: %1. |Следующая проверка сеансов будет выполнена через минуту.'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения, КоличествоСеансов); Состояние(НСтр("ru = 'Выполняется завершение сеансов'"), , ТекстСообщения, БиблиотекаКартинок.Информация32); Возврат; КонецЕсли; // после начала блокировки сеансы всех пользователей должны быть отключены // если этого не произошло пробуем принудительно прервать соединения ОтключитьОбработчикОжидания("ЗавершитьРаботуПользователей"); Результат = СоединенияИБКлиентСервер.ОтключитьСоединенияИБПоПараметрамЗапуска(ПараметрЗапуска); Если Результат Тогда Состояние(НСтр("ru = 'Завершение сеансов выполнено успешно'"), , НСтр("ru = 'Работа системы завершается...'"), БиблиотекаКартинок.Информация32); ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина; ЗавершитьРаботуСистемы(Ложь); Иначе Состояние(НСтр("ru = 'Завершение сеансов не выполнено.'"), , НСтр("ru = 'Подробности см. в Журнале регистрации.'"), БиблиотекаКартинок.Предупреждение32); КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |