Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 15:28

Как вставить в обмен с сайтом проверку?!

Автор Kintim, 24 янв 2012, 10:09

0 Пользователей и 1 гость просматривают эту тему.

Kintim

УПП Ликероводочный и винный завод. Для УТ всего полно, а вот только не ставится на нашу УПП. Сразу оговорюсь в 1С я ламер... Поэтому не судите строго за допущенные ошибки и непонимание  :nhsrm:

Хочу добавить проверку на наличие символа ":" в поле комментарий и соответственно не проводить ЕСЛИ символ есть.
В конфигураторе 1С нашел следующее:

// если документы нужно проводить, то попытаемся их провести
РежимПроведения = ?(ПроводитьДокументыОперативно, РежимПроведенияДокумента.Оперативный, РежимПроведенияДокумента.Неоперативный);
Для Каждого ДокументПроведения Из МассивДокументовДляПроведения Цикл

Если МассивОтклоненныхДокументов.Найти(ДокументПроведения.Ссылка) <> Неопределено Тогда
Продолжить;
КонецЕсли;

Попытка

ДокументПроведения.ПометкаУдаления = Ложь;
ДокументПроведения.Записать(РежимЗаписиДокумента.Проведение, РежимПроведения);

Исключение

СообщитьОбИсключительнойОшибке(Ложь, "Ошибка при проведении документа: " + Строка(ДокументПроведения) + Символы.ПС + ОписаниеОшибки());
Возврат Ложь;

КонецПопытки;

КонецЦикла;

Для Каждого ДокументПроведения Из МассивОтклоненныхДокументов Цикл

Попытка

ДокОбъект = ДокументПроведения.ПолучитьОбъект();
ДокОбъект.ПометкаУдаления = Истина;
ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);

Исключение

СообщитьОбИсключительнойОшибке(Ложь, "Ошибка при отмене проведения документа: " + Строка(ДокументПроведения) + Символы.ПС + ОписаниеОшибки());
Возврат Ложь;

КонецПопытки;

КонецЦикла;


Однако, как мне кажется проверка строк XML файла на наличие комментария происходит гораздо позже:
Функция ОбработатьЗначениеЭлемента(Знач ИмяЭлемента, Знач ЗначениеЭлемента, ДеревоДокументов);

Успешно = Истина;
КоличествоДокументов = ДеревоДокументов.Строки.Количество();
ИмяТекущегоЭлемента  = ПолучитьИмяЭлементаИзПоследовательности(ИмяЭлемента);
ДеревоАдресов = Неопределено;
ТаблицаКонтактов = Неопределено;
ТаблицаКонтактныхЛиц = Неопределено;

Если КоличествоДокументов > 0 Тогда

ТекущаяСтрокаДерева       = ДеревоДокументов.Строки[КоличествоДокументов - 1];
    ТекущийДокумент       = ТекущаяСтрокаДерева.ДокументОбъект;

ТекущаяСтрокаТоваровУслуг = Неопределено;
ТекущаяСтрокаСкидок   = Неопределено;

КоличествоТоваровУслуг    = ТекущаяСтрокаДерева.Строки.Количество();

Если КоличествоТоваровУслуг > 0 Тогда

ТекущаяСтрокаТоваровУслуг = ТекущаяСтрокаДерева.Строки[КоличествоТоваровУслуг - 1];

КоличествоСкидок      = ТекущаяСтрокаТоваровУслуг.Строки.Количество();

Если КоличествоСкидок > 0 Тогда
ТекущаяСтрокаСкидок = ТекущаяСтрокаТоваровУслуг.Строки[КоличествоСкидок - 1];
КонецЕсли;

КонецЕсли;
   
Если ИмяЭлемента = "Документ.Номер" Тогда
ТекущийДокумент.Организация   = Организация;
ТекущийДокумент.Ответственный = Ответственный;
ТекущийДокумент.Подразделение = Подразделение;
//где-то тут....
                        ТекущийДокумент.Комментарий   = "№ " + ЗначениеЭлемента + " " + HTTPОбменСервер;
//т.е. наличие комментарияфиксируется тут?!
ТекущийДокумент.НомерВходящегоДокументаЭлектронногоОбмена = ЗначениеЭлемента;
ТекущаяСтрокаДерева.НомерВходящий = ЗначениеЭлемента;

ОтобразитьСостояние("Обработка документа CML: " + ТекущаяСтрокаДерева.НомерВходящий);



Kintim

ВАУ.. на просмотре такого не было...((
Перезаписываю свое обращение ---

Хочу добавить проверку на наличие символа ":" в поле комментарий и соответственно не проводить ЕСЛИ символ есть.
В конфигураторе 1С нашел следующее:

// если документы нужно проводить, то попытаемся их провести
   РежимПроведения = ?(ПроводитьДокументыОперативно, РежимПроведенияДокумента.Оперативный,    РежимПроведенияДокумента.Неоперативный);
   Для Каждого ДокументПроведения Из МассивДокументовДляПроведения Цикл
      
      Если МассивОтклоненныхДокументов.Найти(ДокументПроведения.Ссылка) <> Неопределено Тогда
         Продолжить;
      КонецЕсли;
      
         Попытка
         
         ДокументПроведения.ПометкаУдаления = Ложь;
         ДокументПроведения.Записать(РежимЗаписиДокумента.Проведение, РежимПроведения);         
                  
      Исключение
         
         СообщитьОбИсключительнойОшибке(Ложь, "Ошибка при проведении документа: " + Строка(ДокументПроведения) + Символы.ПС + ОписаниеОшибки());
         Возврат Ложь;
                  
      КонецПопытки;
      
   КонецЦикла;
   
   Для Каждого ДокументПроведения Из МассивОтклоненныхДокументов Цикл
      
      Попытка
         
         ДокОбъект = ДокументПроведения.ПолучитьОбъект();
         ДокОбъект.ПометкаУдаления = Истина;
         ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);         
                  
      Исключение
         
         СообщитьОбИсключительнойОшибке(Ложь, "Ошибка при отмене проведения документа: " + Строка(ДокументПроведения) + Символы.ПС + ОписаниеОшибки());
         Возврат Ложь;
                  
      КонецПопытки;
      
   КонецЦикла;

Kintim

И вторая часть...
Однако, как мне кажется проверка строк XML файла на наличие комментария происходит гораздо позже:

Если ИмяЭлемента = "Документ.Номер" Тогда
   //+1cbit MBerdichevskiy    14.01.2012
         ТекущийДокумент.СкладГруппа                 = бтСклад;
         ТекущийДокумент.ОтражатьВБухгалтерскомУчете = бтОтражатьВБУ;
         ТекущийДокумент.ВидОперации             = Перечисления.ВидыОперацийЗаказПокупателя.ПродажаКомиссия;
   //-1cbit MBerdichevskiy         
         ТекущийДокумент.Организация   = Организация;
         ТекущийДокумент.Ответственный = Ответственный;
         ТекущийДокумент.Подразделение = Подразделение;
         ТекущийДокумент.Комментарий   = "№ " + ЗначениеЭлемента + " " + HTTPОбменСервер;
                  
         ТекущийДокумент.НомерВходящегоДокументаЭлектронногоОбмена = ЗначениеЭлемента;
         ТекущаяСтрокаДерева.НомерВходящий = ЗначениеЭлемента;
         
         ОтобразитьСостояние("Обработка документа CML: " + ТекущаяСтрокаДерева.НомерВходящий);

Dethmontt

Ты найди свой коментарий уже при проведении и если есть твой символ тогда МассивОтклоненныхДокументов.Добавить(СсылкаНаТвойДокумент);
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Kintim


Kintim

Правильно ли я понял.. Что нужно, ЭТО:
   {   ИначеЕсли ИмяЭлемента = "Документ.Комментарий" Тогда   
      ТекущийДокумент.Комментарий = ТекущийДокумент.Комментарий + ": " + ЗначениеЭлемента; }

Заменить на.. ЭТО:
   {ИначеЕсли ИмяЭлемента = "Документ.Комментарий" Тогда   
          ТекущийДокумент.Комментарий = ТекущийДокумент.Комментарий + ": " + ЗначениеЭлемента;
          Если ТекущийДокумент.Комментарий Тогда
             МассивОтклоненныхДокументов.Добавить(ТекущийДокумент);
         КонецЕсли; }

Kintim

или правильнее.... так:
   ИначеЕсли ИмяЭлемента = "Документ.Комментарий" Тогда   
         ТекущийДокумент.Комментарий = ТекущийДокумент.Комментарий + ": " + ЗначениеЭлемента;
         Если ТекущийДокумент.Комментарий = ": " Тогда
             МассивОтклоненныхДокументов.Добавить(ТекущийДокумент);
         КонецЕсли;

has

Если я правильно понял, то надо если в коментарии есть двоеточие, тогда не даем проводить? Тогда так

Если Найти(ТекущийДокумент.Комментарий, ":") > 0 Тогда
   МассивОтклоненныхДокументов.Добавить(ТекущийДокумент);
КонецЕсли;

Kintim

Хм... Тогда
ERROR: Переменная не определена (МассивОтклоненныхДокументов)
<<?>>МассивОтклоненныхДокументов.Добавить(ТекущийДокумент);

Kintim

Так.. ну понятно... Они в разных Процедурах... отсюда и ошибка, вот только как запустить проверку на наличие в строке ":" рядом с МассивОтклоненныхДокументов ?!?!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск