|
Обновил ЗУП 3.1. Возникли проблемы с модулем УправлениеКонтактнойИнформациейСлужебный | ☑ | ||
---|---|---|---|---|
0
Косяк
01.02.18
✎
12:09
|
Обновил ЗУП до 3.1.4.169. Платформа 8.3.11.2954.
Перестала работать обработка выгрузки зарплатных данных в банк. Ошибки такого типа: {ВнешняяОбработка.МодульОбменаСБанком_ЗУП31.Форма.Форма.Форма(1144)}: Метод объекта не обнаружен (ЭтоРоссийскийАдрес) Если УправлениеКонтактнойИнформациейСлужебный.ЭтоРоссийскийАдрес(АдресРФ) Тогда Общий модуль УправлениеКонтактнойИнформациейСлужебный изменился до неузнаваемости. Что делать? |
|||
1
cw014
01.02.18
✎
12:11
|
Искать аналоги
|
|||
2
Мыш
01.02.18
✎
12:11
|
(0) Править внешнюю обработку "МодульОбменаСБанком_ЗУП31"
|
|||
3
Косяк
01.02.18
✎
12:14
|
(2) Может старый модуль УправлениеКонтактнойИнформациейСлужебный ввести в состав обработки?
|
|||
4
Мыш
01.02.18
✎
12:22
|
(3) Неправильный подход. Правильный: прочитать описание программных интерфейсов подсистемы и соответственно поправить код обработки.
|
|||
5
Alexandr_U1982
01.02.18
✎
12:24
|
Ошибка возникла из-за того, что при разработке обработки вы использовали процедуру или функцию (ЭтоРоссийскийАдрес) входящую в область "СлужебныеПроцедурыиФункции" общего модуля.
Эти процедуры и функции 1С не рекомендует использовать в своих разработках, т.к. их состав может внезапно измениться в одном из обновлений. Вам нужно, либо использовать процедуру/функцию входящую в программный интерфейс (Область ПрограммныйИнтерфейс в объектах конфигурации), либо написать свою процедуру/функцию. |
|||
6
Косяк
01.02.18
✎
12:25
|
(4)Все что связано с обработкой адресов - придется переписывать, а это довольно много. Обработка уже отлажена.
|
|||
7
Косяк
01.02.18
✎
12:25
|
Обработку писал кто-то, не я
|
|||
8
Косяк
01.02.18
✎
13:53
|
Решил на копии базы попробовать такой вариант:
Добавил старый общий модуль УправлениеКонтактнойИнформациейСлужебный и назвал его УправлениеКонтактнойИнформациейСлужебный2. Пробую обработку, но вылазит такая ошибка: {ВнешняяОбработка.МодульОбменаСБанком_ЗУП31.Форма.Форма.Форма(1132)}: Метод объекта не обнаружен (КонтактнаяИнформацияИзXML) XDTOСтруктура = УправлениеКонтактнойИнформациейСлужебный2.КонтактнаяИнформацияИзXML(КонтактныеДанные.ЗначенияПолей, Перечисления.ТипыКонтактнойИнформации.Адрес, РезультатыЧтения); |
|||
9
Косяк
01.02.18
✎
13:59
|
Переименовал метод КонтактнаяИнформацияИзXML2, т.к. он есть и в старом обем модуле и в новом.
{ВнешняяОбработка.МодульОбменаСБанком_ЗУП31.Форма.Форма.Форма(1132)}: Метод объекта не обнаружен (КонтактнаяИнформацияИзXML2) XDTOСтруктура = УправлениеКонтактнойИнформациейСлужебный2.КонтактнаяИнформацияИзXML2(КонтактныеДанные.ЗначенияПолей, Перечисления.ТипыКонтактнойИнформации.Адрес, РезультатыЧтения); Все равно не помогло. Метод есть, почему обработка его не видит? |
|||
10
Косяк
01.02.18
✎
14:38
|
Никак не могу понять, почему не находит метод. Кто знает, какие тут могут быть причины?
|
|||
11
Alexandr_U1982
01.02.18
✎
14:47
|
При объявлении методов "КонтактнаяИнформацияИзXML" и "КонтактнаяИнформацияИзXML2" стоит слово Экспорт?
|
|||
12
Вафель
01.02.18
✎
14:49
|
теперь функция называется ЭтоНациональныйАдрес
|
|||
13
Косяк
01.02.18
✎
14:55
|
нашел ошибку. Оказываетсяя не весь модуль скопипастил. Нужно пойти перекусить, а то все глаза уже проглядел)
|
|||
14
Косяк
01.02.18
✎
14:56
|
Спасибо за участие!
|
|||
15
Вафель
01.02.18
✎
14:57
|
брось ты это дело: модули копипастить.
|
|||
16
ildary
01.02.18
✎
15:07
|
(15) Совет "переписать обработку правильно - под новый стандарт" - успешно проигнорирован. Как говорил один персонаж "я тоже не люблю делать вещи правильно, когда их можно сделать через з.адницу".
|
|||
17
Косяк
01.02.18
✎
15:34
|
(16)Да, надо переписывать чужую обработку. Бухгалтерии срочно нужно перечислять сотрудникам зарплату в банк и они думают, что внести нужные исправления - дело быстрое.
Времянка вряд ли прокатит. Сейчас посмотрел, - ф файл не выгрузилась колонка адреса и индекса. По-видимому это означает, что структура самих данных изменилась.. |
|||
18
Косяк
01.02.18
✎
15:36
|
(15)Оставить сбоку старый модуль, переименовав его, - кому это помешает?
|
|||
19
Косяк
01.02.18
✎
15:46
|
Теперь получилось так: Но адрес не выводится, там пусто.
Функция ПолучитьАдресОбъекта(парамОбъект, парамВидАдреса) Экспорт КонтактныеДанные = ПолучитьКонтактныеДанные(парамОбъект, Перечисления.ТипыКонтактнойИнформации.Адрес, парамВидАдреса); Если ЗначениеЗаполнено(КонтактныеДанные) Тогда СтруктураВозврата = Новый Структура; СтруктураВозврата.Вставить("Адрес", ""); СтруктураВозврата.Вставить("Индекс", ""); СтруктураВозврата.Вставить("Район", ""); СтруктураВозврата.Вставить("Город", ""); СтруктураВозврата.Вставить("Улица", ""); СтруктураВозврата.Вставить("Дом", ""); СтруктураВозврата.Вставить("Корпус", ""); СтруктураВозврата.Вставить("Квартира", ""); СтранаРоссия = Справочники.СтраныМира.Россия; // Пытаемся заполнить из параметров Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоКонтактнаяИнформацияВXML(КонтактныеДанные.ЗначенияПолей) Тогда РезультатыЧтения = Новый Структура; XDTOСтруктура = УправлениеКонтактнойИнформациейСлужебный2.КонтактнаяИнформацияИзXML(КонтактныеДанные.ЗначенияПолей, Перечисления.ТипыКонтактнойИнформации.Адрес, РезультатыЧтения); Если РезультатыЧтения.Свойство("ТекстОшибки") Тогда XDTOСтруктура.Представление = КонтактныеДанные.Представление; XDTOСтруктура.Состав.Страна = Строка(СтранаРоссия); КонецЕсли; Иначе XDTOСтруктура = УправлениеКонтактнойИнформациейСлужебный2.АдресXMLВXDTO(КонтактныеДанные.ЗначенияПолей, КонтактныеДанные.Представление, ); КонецЕсли; // Разбираем адрес АдресРФ = XDTOСтруктура.Состав.Состав; Страна = СокрЛП(XDTOСтруктура.Состав.Страна); Если УправлениеКонтактнойИнформациейСлужебный2.ЭтоРоссийскийАдрес(АдресРФ) Тогда Индекс = УправлениеКонтактнойИнформациейСлужебный2.ПочтовыйИндексАдреса(АдресРФ); Если Индекс = Неопределено Тогда Индекс = ""; КонецЕсли; Район = РайонАдреса(АдресРФ); СубъектРФ = АдресРФ.СубъектРФ; Город = АдресРФ.Город; НаселенныйПункт = АдресРФ.НаселПункт; Город_НаселенныПункт = Город; Если ПустаяСтрока(Город) Тогда Город_НаселенныПункт = СокрЛП("" + СубъектРФ + " " + НаселенныйПункт); ИначеЕсли Не ПустаяСтрока(НаселенныйПункт) Тогда Город_НаселенныПункт = СокрЛП("" + Город + " " + НаселенныйПункт); КонецЕсли; Если ПустаяСтрока(Район) И ПустаяСтрока(Город) И ПустаяСтрока(НаселенныйПункт) Тогда Город = СубъектРФ; Город_НаселенныПункт = СубъектРФ; КонецЕсли; Улица = АдресРФ.Улица; Дом = ""; Корпус = ""; Квартира = ""; // Строения и помещения Данные = УправлениеКонтактнойИнформациейСлужебный2.ЗданияИПомещенияАдреса(АдресРФ); Для Ном = 1 По Мин(Данные.Здания.Количество(), 1) Цикл Строка = Данные.Здания[Ном - 1]; Дом = Строка.Значение; КонецЦикла; Для Ном = 2 По Данные.Здания.Количество() Цикл Строка = Данные.Здания[Ном - 1]; Корпус = Строка.Значение; КонецЦикла; Для Ном = 1 По Мин(Данные.Помещения.Количество(), 1) Цикл Строка = Данные.Помещения[Ном - 1]; Квартира = Строка.Значение; КонецЦикла; Адрес = Индекс + ", " + Район + ", " + Город + ", " + НаселенныйПункт + ", " + Улица + ", " + Дом + ", " + Корпус + ", " +Квартира; СтруктураВозврата.Индекс = Индекс; СтруктураВозврата.Район = Район; СтруктураВозврата.Город = Город_НаселенныПункт; СтруктураВозврата.Улица = Улица; СтруктураВозврата.Дом = Дом; СтруктураВозврата.Корпус = Корпус; СтруктураВозврата.Квартира = Квартира; Иначе // Это иностранный адрес Адрес = СокрЛП(АдресРФ); КонецЕсли; СтруктураВозврата.Адрес = Адрес; Возврат СтруктураВозврата; Иначе Возврат Неопределено; КонецЕсли; КонецФункции Процедура ЗаполнитьСтрокуТаблицы(парамНоваяСтрока, Знач парамСтрока, парамОрганизация, парамПериод) СтруктураРабочегоМеста = ПолучитьРабочееМестоФизическогоЛица(парамСтрока.ФизическоеЛицо, парамОрганизация, парамПериод); СтруктураПаспорта = ПолучитьПаспортныеДанныеФизическогоЛица(парамСтрока.ФизическоеЛицо, парамПериод); СтруктураВторогоДокумента = ПолучитьДанныеНеосновныхДокументовФизическогоЛица(парамСтрока.ФизическоеЛицо); СтруктураАдресаРегистрации = ПолучитьАдресОбъекта(парамСтрока.ФизическоеЛицо, Справочники.ВидыКонтактнойИнформации.АдресПоПропискеФизическиеЛица); СтруктураАдресаПроживания = ПолучитьАдресОбъекта(парамСтрока.ФизическоеЛицо, Справочники.ВидыКонтактнойИнформации.АдресМестаПроживанияФизическиеЛица); Если Не ЗначениеЗаполнено(СтруктураАдресаПроживания) Тогда СтруктураАдресаПроживания = СтруктураАдресаРегистрации; КонецЕсли; парамНоваяСтрока.FIOOWNER = парамСтрока.ФИО; парамНоваяСтрока.PASPORT = СтруктураПаспорта.ДокументСерия + " " + СтруктураПаспорта.ДокументНомер + " " + СтруктураПаспорта.ДокументКемВыдан; парамНоваяСтрока.ADDRESS = ?(ЗначениеЗаполнено(СтруктураАдресаРегистрации), Строка(СтруктураАдресаРегистрации.Район), "") + ?(ЗначениеЗаполнено(СтруктураАдресаРегистрации), Строка(СтруктураАдресаРегистрации.Город), "") + ?(ЗначениеЗаполнено(СтруктураАдресаРегистрации), Строка(СтруктураАдресаРегистрации.Улица), "") + ?(ЗначениеЗаполнено(СтруктураАдресаРегистрации), Строка(СтруктураАдресаРегистрации.Дом), "") + ?(ЗначениеЗаполнено(СтруктураАдресаРегистрации), Строка(СтруктураАдресаРегистрации.Корпус), "") + ?(ЗначениеЗаполнено(СтруктураАдресаРегистрации), Строка(СтруктураАдресаРегистрации.Квартира), ""); парамНоваяСтрока.INDEX = ?(ЗначениеЗаполнено(СтруктураАдресаРегистрации), Строка(СтруктураАдресаРегистрации.Индекс), ""); парамНоваяСтрока.PHONENM = Прав(СокрЛП(СтруктураРабочегоМеста.ТабельныйНомер), 7) + " " + СтруктураРабочегоМеста.КодПодразделения; парамНоваяСтрока.VTYPE = "V03"; парамНоваяСтрока.ACCOUNT = ПривестиНомерСчета(парамСтрока.НомерЛицевогоСчета); парамНоваяСтрока.CASHVAL = Формат(парамСтрока.Сумма, Объект.мФорматСуммыБезПробелов); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |