Имя: Пароль:
1C
1С v8
Отладка внешних обработок.
, ,
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);
    КонецЕсли;
    
КонецПроцедуры