|
Код условия выполняется 2 раза | ☑ | ||
---|---|---|---|---|
0
Anonim1234
05.09.16
✎
06:01
|
Здравствуйте. Есть общий код смысл его в создании документа в другой базе по сом соединению и обновлению данных при наличии такого документа. Ставлю точку останова кода, код проходит два раза, соответственно на второй раз такой документ уже существует в базе и проходит его обновление.
|
|||
1
Anonim1234
05.09.16
✎
06:01
|
Если КонтрольСуммыЗадолженности=ложь или КонтрольДнейЗадолженности=ложь Тогда
Отказ=истина; //Предупреждение("Данные по документу не соответствуют условия договора!"); Иначе ВесПоДокументу=0; Для каждого зн из Груз Цикл ВесПоДокументу=ВесПоДокументу+зн.ВесКОтгрузке; КонецЦикла; Если глV21Object<> Неопределено Тогда /// поиск в базе жд автовесовой данного документа по идентификатору // ТекущийДокУникИнден = Строка(ЭтотОбъект.Ссылка.УникальныйИдентификатор()); Документ1С = глV21Object.Документы.Жд_Накладная.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийДокУникИнден)); // Если Найти(глV21Object.String(Документ1С),"не найден") = 0 Тогда // // сообщить(" документ уже есть в базе, производится обновление "); Если ЭтотОбъект.ОборотыПоДокументуЗавершены=ложь и ЭтотОбъект.НакладнаяИзменена=Истина Тогда НовыйДокумент =глV21Object.Документы.ЖД_Накладная.НайтиДокумент(); //ОбъектДок = НовыйДокумент.ПолучитьОбъект(); ///--- заполняем документ НовыйДокумент.Дата =ЭтотОбъект.Дата; НовыйДокумент.Номер =ЭтотОбъект.Номер; НовыйДокумент.ПометкаУдаления=ЭтотОбъект.ПометкаУдаления; //--- организация ТекущийОргн =Строка(ЭтотОбъект.Организация.УникальныйИдентификатор()); ОргдАВ =глV21Object.Справочники.Организации.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийОргн)); Если Найти(глV21Object.String(ОргдАВ),"не найден") = 0 Тогда НовыйДокумент.Организация = ОргдАВ; иначе НоваяОрг =глV21Object.Справочники.Организации.СоздатьЭлемент(); НоваяОрг.Код = ЭтотОбъект.Ссылка.Организация.Код; НоваяОрг.Наименование = ЭтотОбъект.Ссылка.Организация.Наименование; НоваяОрг.НаименованиеПолное = ЭтотОбъект.Ссылка.Организация.НаименованиеПолное; НоваяОрг.БИН = ЭтотОбъект.Ссылка.Организация.БИН; НоваяОрг.УстановитьСсылкуНового(ОргдАВ); НоваяОрг.Записать(); НовыйДокумент.Организация =ОргдАВ ; КонецЕсли; //--- Плательщик //НаимКонтрагента=глV21Object.Справочники.Контрагенты.НайтиПоНаименованию(Источник.Ссылка.Контрагент.Наименование); ТекущийКонтрг =Строка(ЭтотОбъект.Плательщик.УникальныйИдентификатор()); КонтрАВ =глV21Object.Справочники.Контрагенты.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийКонтрг)); Если Найти(глV21Object.String(КонтрАВ),"не найден") = 0 Тогда НовыйДокумент.Плательщик = КонтрАВ; иначе //-- процедура добавление контрагента // Сообщить("Контрагент не найден, будет добавлен в базу Автовесов"); НовыйКонтрагент =глV21Object.Справочники.Контрагенты.СоздатьЭлемент(); НовыйКонтрагент.Код = ЭтотОбъект.Плательщик.Код; НовыйКонтрагент.Наименование = ЭтотОбъект.Плательщик.Наименование; НовыйКонтрагент.НаименованиеПолное = ЭтотОбъект.Плательщик.НаименованиеПолное; НовыйКонтрагент.БИН = ЭтотОбъект.Плательщик.БИН; НовыйКонтрагент.УстановитьСсылкуНового(КонтрАВ); НовыйКонтрагент.Записать(); НовыйДокумент.Плательщик =КонтрАВ ; КонецЕсли; ///---- Договор ТекущийДоговорДокаУникИнден =Строка(ЭтотОбъект.ДоговорКонтрагента.УникальныйИдентификатор()); ДоговорАВ =глV21Object.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийДоговорДокаУникИнден)); Если Найти(глV21Object.String(ДоговорАВ),"не найден") = 0 Тогда НовыйДокумент.ДоговорКОнтрагента = ДоговорАВ; иначе //-- процедура добавление нового договора НовыйДоговор =глV21Object.Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); НовыйДоговор.Код = ЭтотОбъект.ДоговорКонтрагента.Код; НовыйДоговор.Наименование = ЭтотОбъект.ДоговорКонтрагента.Наименование; НовыйДоговор.Владелец=КонтрАВ; НовыйДоговор.Организация=ОргдАВ; НовыйДоговор.УстановитьСсылкуНового(ДоговорАВ); НовыйДоговор.Записать(); НовыйДокумент.ДоговорКОнтрагента =ДоговорАВ ; КонецЕсли; //--- Получатель //НаимКонтрагента=глV21Object.Справочники.Контрагенты.НайтиПоНаименованию(Источник.Ссылка.Контрагент.Наименование); ТекущийПолучатель =Строка(ЭтотОбъект.Получатель.УникальныйИдентификатор()); ПолучательАВ =глV21Object.Справочники.Контрагенты.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийПолучатель)); Если Найти(глV21Object.String(ПолучательАВ),"не найден") = 0 Тогда НовыйДокумент.Получатель = ПолучательАВ; иначе //-- процедура добавление контрагента // Сообщить("Контрагент не найден, будет добавлен в базу Автовесов"); НовыйКонтрагент =глV21Object.Справочники.Контрагенты.СоздатьЭлемент(); НовыйКонтрагент.Код = ЭтотОбъект.Получатель.Код; НовыйКонтрагент.Наименование = ЭтотОбъект.получатель.Наименование; НовыйКонтрагент.НаименованиеПолное = ЭтотОбъект.Получатель.НаименованиеПолное; НовыйКонтрагент.БИН = ЭтотОбъект.Получатель.БИН; НовыйКонтрагент.УстановитьСсылкуНового(ПолучательАВ); НовыйКонтрагент.Записать(); НовыйДокумент.Получатель =ПолучательАВ ; КонецЕсли; ТекущийОтправитель =Строка(ЭтотОбъект.Отправитель.УникальныйИдентификатор()); ОтправительАВ =глV21Object.Справочники.Организации.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийОтправитель)); Если Найти(глV21Object.String(ОтправительАВ),"не найден") = 0 Тогда НовыйДокумент.Отправитель = ОтправительАВ; иначе КонецЕсли; //--- Станция ТекущийСтанция =Строка(ЭтотОбъект.Станция.УникальныйИдентификатор()); СтанцияАВ =глV21Object.Справочники.СтанцийЖД.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийСтанция)); Если Найти(глV21Object.String(СтанцияАВ),"не найден") = 0 Тогда НовыйДокумент.Станция = СтанцияАВ; иначе //-- процедура добавление новой станции НоваяСтанция =глV21Object.Справочники.СтанцийЖд.СоздатьЭлемент(); НоваяСтанция.Код = ЭтотОбъект.Станция.Код; НоваяСтанция.Наименование = ЭтотОбъект.Станция.Наименование; НоваяСтанция.КодСтанции=ЭтотОбъект.Станция.КодСтанции; СтанцияАВ.Записать(); НовыйДокумент.СтанцияАВ =СтанцияАВ ; КонецЕсли; НовыйДокумент.ВесПоДокументу=ЭтотОбъект.ВесПоДокументу; НовыйДокумент.КодСтанции=ЭтотОбъект.КодСтанции; НовыйДокумент.КодОКПОПолучателя=ЭтотОбъект.КодОКПОПолучателя; НовыйДокумент.КодПолучателя=ЭтотОбъект.КодПолучателя; НовыйДокумент.КодОКПООтправителя=ЭтотОбъект.КодОКПООтправителя; НовыйДокумент.КодОтправителя=ЭтотОбъект.КодОтправителя; НовыйДокумент.ПочтовыйАдресПолучателя=ЭтотОбъект.ПочтовыйАдресПолучателя; НовыйДокумент.ПочтовыйАдресОтправителя=ЭтотОбъект.ПочтовыйАдресОтправителя; НовыйДокумент.РеквизитыОплаты=ЭтотОбъект.РеквизитыОплаты; НовыйДокумент.Грузоподъемность=ЭтотОбъект.Грузоподъемность; НовыйДокумент.КоличествоОсей=ЭтотОбъект.КоличествоОсей; НовыйДокумент.ТипЦист=ЭтотОбъект.ТипЦист; НовыйДокумент.ВидНакладной=ЭтотОбъект.ВидНакладной; НовыйДокумент.ПогрузкаСредствами=ЭтотОбъект.ПогрузкаСредствами; НовыйДокумент.Группа=ЭтотОбъект.Группа; НовыйДокумент.Схема=ЭтотОБъект.Схема; НовыйДокумент.Иск=ЭтотОбъект.Иск; НовыйДокумент.ИтогоМест=ЭтотОбъект.ИтогоМест; НовыйДокумент.ИтогоМасса=ЭтотОбъект.ИтогоМасса; НовыйДокумент.СпособОпределенияМассы=ЭтотОбъект.СпособОпределенияМассы; НовыйДокумент.ДополнительнаяИнформация=ЭтотОбъект.ДополнительнаяИнформация; НовыйДокумент.ОплатаСредствамиОрганизации=ЭтотОбъект.ОплатаСредствамиОрганизации; НовыйДокумент.ОплатаСредствамиТрансжол=ЭтотОбъект.ОплатаСредствамиТрансжол; НовыйДокумент.Телеграммой=ЭтотОбъект.Телеграммой; НовыйДокумент.НаОбороте=ЭтотОбъект.НаОбороте; НовыйДокумент.ВагонПредоставлен=ЭтотОбъект.ВагонПредоставлен; НовыйДокумент.ЗаявлениеОтправителя=ЭтотОбъект.ЗаявлениеОтправителя; НовыйДокумент.РодУпаковки=ЭтотОбъект.РодУпаковки; НовыйДокумент.ВидПломбы=ЭтотОбъект.ВидПломбы; НовыйДокумент.КолВоПломб=ЭтотОбъект.КолВоПломб; НовыйДокумент.ПриложенныеДокументы=ЭтотОбъект.ПриложенныеДокументы; НовыйДокумент.УстановитьССылкуНового(Документ1С); НовыйДокумент.Записать(); //ОтправленоНаЖдВесовую=истина; Иначе Сообщить("Условия для повторного обновления реквизитов документа жд накладная в весовой жд: Состояние документа: Обороты по документу завершены=ложь, Накладная изменена=истина"); КонецЕсли; Иначе // сообщить(" документ уже есть в базе, производится обновление "); // НовыйДокумент =V81Object.Документы.РеализацияТоваровУслуг.СоздатьДокумент().ПолучитьСсылкуНового(Источник.Ссылка.УникальныйИдентификатор()); НовыйДокумент =глV21Object.Документы.ЖД_Накладная.CreateDocument(); //ОбъектДок = НовыйДокумент.ПолучитьОбъект(); ///--- заполняем документ НовыйДокумент.Дата =ЭтотОбъект.Дата; НовыйДокумент.Номер =ЭтотОбъект.Номер; НовыйДокумент.ПометкаУдаления=ЭтотОбъект.ПометкаУдаления; //--ВидОперации //НовыйДокумент.ВидОперации= ВидОперации.метаданные().ЗначенияПеречисления.Получить(Перечисления.ВидыОперацийЖДНакладной.Индекс(ВидОперации)).Имя; //app.Перечисление.Статьякалькуляции.Блюдо.Идентификатор(Идентификатор) ; //глV21Object.ВидыОперацийЖДНакладной.Получить(); //ИмяЗначенияПеречисления=этотОбъект.ВидОперации; //ПредставлениеПеречисленияCOM= V8.String(СсылкаНаПеречислениеCOM); //синоним //ИмяПеречисленияCOM= СсылкаНаПеречислениеCOM.Метаданные().Имя; //СсылкаНаПеречисление = Перечисления[ИмяПеречисленияCOM][ИмяЗначенияПеречисленияCOM]; //--ВидОперации //--- организация ТекущийОргн =Строка(ЭтотОбъект.Организация.УникальныйИдентификатор()); ОргдАВ =глV21Object.Справочники.Организации.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийОргн)); Если Найти(глV21Object.String(ОргдАВ),"не найден") = 0 Тогда НовыйДокумент.Организация = ОргдАВ; иначе НоваяОрг =глV21Object.Справочники.Организации.СоздатьЭлемент(); НоваяОрг.Код = ЭтотОбъект.Ссылка.Организация.Код; НоваяОрг.Наименование = ЭтотОбъект.Ссылка.Организация.Наименование; НоваяОрг.НаименованиеПолное = ЭтотОбъект.Ссылка.Организация.НаименованиеПолное; НоваяОрг.БИН = ЭтотОбъект.Ссылка.Организация.БИН; НоваяОрг.УстановитьСсылкуНового(ОргдАВ); НоваяОрг.Записать(); НовыйДокумент.Организация =ОргдАВ ; КонецЕсли; //--- Плательщик //НаимКонтрагента=глV21Object.Справочники.Контрагенты.НайтиПоНаименованию(Источник.Ссылка.Контрагент.Наименование); ТекущийКонтрг =Строка(ЭтотОбъект.Плательщик.УникальныйИдентификатор()); КонтрАВ =глV21Object.Справочники.Контрагенты.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийКонтрг)); Если Найти(глV21Object.String(КонтрАВ),"не найден") = 0 Тогда НовыйДокумент.Плательщик = КонтрАВ; иначе //-- процедура добавление контрагента // Сообщить("Контрагент не найден, будет добавлен в базу Автовесов"); НовыйКонтрагент =глV21Object.Справочники.Контрагенты.СоздатьЭлемент(); НовыйКонтрагент.Код = ЭтотОбъект.Плательщик.Код; НовыйКонтрагент.Наименование = ЭтотОбъект.Плательщик.Наименование; НовыйКонтрагент.НаименованиеПолное = ЭтотОбъект.Плательщик.НаименованиеПолное; НовыйКонтрагент.БИН = ЭтотОбъект.Плательщик.БИН; НовыйКонтрагент.УстановитьСсылкуНового(КонтрАВ); НовыйКонтрагент.Записать(); НовыйДокумент.Плательщик =КонтрАВ ; КонецЕсли; ///---- Договор ТекущийДоговорДокаУникИнден =Строка(ЭтотОбъект.ДоговорКонтрагента.УникальныйИдентификатор()); ДоговорАВ =глV21Object.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийДоговорДокаУникИнден)); Если Найти(глV21Object.String(ДоговорАВ),"не найден") = 0 Тогда НовыйДокумент.ДоговорКОнтрагента = ДоговорАВ; иначе //-- процедура добавление нового договора НовыйДоговор =глV21Object.Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); НовыйДоговор.Код = ЭтотОбъект.ДоговорКонтрагента.Код; &nb |
|||
2
Anonim1234
05.09.16
✎
06:02
|
Лучше вставлю сокращенный вариант кода))
|
|||
3
Anonim1234
05.09.16
✎
06:06
|
//устанавливать если соединение прошло успешно
Если КонтрольСуммыЗадолженности=ложь или КонтрольДнейЗадолженности=ложь Тогда Отказ=истина; //Предупреждение("Данные по документу не соответствуют условия договора!"); Иначе ВесПоДокументу=0; Для каждого зн из Груз Цикл ВесПоДокументу=ВесПоДокументу+зн.ВесКОтгрузке; КонецЦикла; Если глV21Object<> Неопределено Тогда /// поиск в базе жд автовесовой данного документа по идентификатору // ТекущийДокУникИнден = Строка(ЭтотОбъект.Ссылка.УникальныйИдентификатор()); Документ1С = глV21Object.Документы.Жд_Накладная.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийДокУникИнден)); // Если Найти(глV21Object.String(Документ1С),"не найден") = 0 Тогда // // сообщить(" документ уже есть в базе, производится обновление "); Если ЭтотОбъект.ОборотыПоДокументуЗавершены=ложь и ЭтотОбъект.НакладнаяИзменена=Истина Тогда НовыйДокумент =глV21Object.Документы.ЖД_Накладная.НайтиДокумент(); //ОбъектДок = НовыйДокумент.ПолучитьОбъект(); ///--- заполняем документ НовыйДокумент.Дата =ЭтотОбъект.Дата; НовыйДокумент.Номер =ЭтотОбъект.Номер; НовыйДокумент.ПометкаУдаления=ЭтотОбъект.ПометкаУдаления; //--- организация ТекущийОргн =Строка(ЭтотОбъект.Организация.УникальныйИдентификатор()); ОргдАВ =глV21Object.Справочники.Организации.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийОргн)); Если Найти(глV21Object.String(ОргдАВ),"не найден") = 0 Тогда НовыйДокумент.Организация = ОргдАВ; иначе //--- Станция ТекущийСтанция =Строка(ЭтотОбъект.Станция.УникальныйИдентификатор()); СтанцияАВ =глV21Object.Справочники.СтанцийЖД.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийСтанция)); Если Найти(глV21Object.String(СтанцияАВ),"не найден") = 0 Тогда НовыйДокумент.Станция = СтанцияАВ; иначе КонецЕсли; НовыйДокумент.Записать(); //ОтправленоНаЖдВесовую=истина; Иначе Сообщить("Условия для повторного обновления реквизитов документа жд накладная в весовой жд: Состояние документа: Обороты по документу завершены=ложь, Накладная изменена=истина"); КонецЕсли; Иначе // сообщить(" документ уже есть в базе, производится обновление "); // НовыйДокумент =V81Object.Документы.РеализацияТоваровУслуг.СоздатьДокумент().ПолучитьСсылкуНового(Источник.Ссылка.УникальныйИдентификатор()); НовыйДокумент =глV21Object.Документы.ЖД_Накладная.CreateDocument(); //ОбъектДок = НовыйДокумент.ПолучитьОбъект(); ///--- заполняем документ НовыйДокумент.Дата =ЭтотОбъект.Дата; НовыйДокумент.Номер =ЭтотОбъект.Номер; НовыйДокумент.ПометкаУдаления=ЭтотОбъект.ПометкаУдаления; //--ВидОперации //НовыйДокумент.ВидОперации= ВидОперации.метаданные().ЗначенияПеречисления.Получить(Перечисления.ВидыОперацийЖДНакладной.Индекс(ВидОперации)).Имя; //app.Перечисление.Статьякалькуляции.Блюдо.Идентификатор(Идентификатор) ; //глV21Object.ВидыОперацийЖДНакладной.Получить(); / //--- Получатель //НаимКонтрагента=глV21Object.Справочники.Контрагенты.НайтиПоНаименованию(Источник.Ссылка.Контрагент.Наименование); ТекущийПолучатель =Строка(ЭтотОбъект.Получатель.УникальныйИдентификатор()); ПолучательАВ =глV21Object.Справочники.Контрагенты.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийПолучатель)); Если Найти(глV21Object.String(ПолучательАВ),"не найден") = 0 Тогда НовыйДокумент.Получатель = ПолучательАВ; иначе КонецЕсли; ТекущийОтправитель =Строка(ЭтотОбъект.Отправитель.УникальныйИдентификатор()); ОтправительАВ =глV21Object.Справочники.Организации.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийОтправитель)); Если Найти(глV21Object.String(ОтправительАВ),"не найден") = 0 Тогда НовыйДокумент.Отправитель = ОтправительАВ; иначе КонецЕсли; //--- Станция ТекущийСтанция =Строка(ЭтотОбъект.Станция.УникальныйИдентификатор()); СтанцияАВ =глV21Object.Справочники.СтанцийЖД.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор", ТекущийСтанция)); Если Найти(глV21Object.String(СтанцияАВ),"не найден") = 0 Тогда НовыйДокумент.Станция = СтанцияАВ; иначе КонецЕсли; Для каждого стр Из груз Цикл СтрТабДокаАВ = НовыйДокумент.Груз.Добавить(); // ///-- номенклатура ТекНоменкл =Строка(стр.НаименованиеГруза.УникальныйИдентификатор()); НомАВ =глV21Object.Справочники.Номенклатура.ПолучитьСсылку(глV21Object.NewObject("УникальныйИдентификатор",ТекНоменкл )); Если Найти(глV21Object.String(НомАВ),"не найден") = 0 Тогда СтрТабДокаАВ.НаименованиеГруза = НомАВ; иначе КонецЕсли; СтрТабДокаАВ.ВесКОтгрузке= стр.ВесКОтгрузке ; СтрТабДокаАВ.ПостоянноеЗначениеДляНоменклатуры = стр.ПостоянноеЗначениеДляНоменклатуры ; КонецЦикла; НовыйДокумент.Записать(); ОтправленоНаЖдВесовую=истина; КонецЕсли; КонецЕсли; КонецЕсли; |
|||
4
Klesk666
05.09.16
✎
06:17
|
наверно добавляй в последующие условия "и не Отказ"
|
|||
5
Anonim1234
05.09.16
✎
06:21
|
(4) а это может как-то повлиять?
|
|||
6
Anonim1234
05.09.16
✎
07:20
|
выполнение процедуры происходит в обработке проведения, та же ситуация даже если код уменьшаю до
|
|||
7
Anonim1234
05.09.16
✎
07:21
|
Если КонтрольСуммыЗадолженности=ложь или КонтрольДнейЗадолженности=ложь Тогда
Отказ=истина; //Предупреждение("Данные по документу не соответствуют условия договора!"); Иначе ВесПоДокументу=0; Для каждого зн из Груз Цикл ВесПоДокументу=ВесПоДокументу+зн.ВесКОтгрузке; КонецЦикла КонецЕсли; |
|||
8
Anonim1234
05.09.16
✎
07:47
|
вообщем получается так до этого документ был просто записан, при проведениии выполняется ПриЗаписи и ОбработкаПроведения, после этого выдается сообщение, Документ был изменен сохранить данные, если да процедуры проходят по новой
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |