Имя: Пароль:
1C
1С v8
Странная ошибка в УТ 10.3
0 Omskdizel
 
23.07.21
15:05
1С:Предприятие 8.3 (8.3.18.1289)
"Управление торговлей", редакция 10.3 (10.3.71.1)
Свежеобновленная. До обновления, попыток вызвать ошибку не было. До копии не добраться сейчас к сожалению.

История довольно-таки проста. Позвонил клиент, у которого после обнов поломалась синхронизация с БП 3.0. Ругается на неверное имя колонки.
ХЗ как такое отлавливать, но пошел классическим шаманским путем:
- проверил версию правил обмена, все ок,
- прибил кэш,
- протестировал и исправил.
Ничего из выше перечисленного не помогло. Решил посмотреть, что же там к выгрузке идет. Добываю стандартную обработку "РегистрацияИзмененийДляОбменаДанными" от 1С.
Обработка хочет в управляемые формы - без проблем. Поставил режим, запускаюсь и тут вываливается ошибка.
"{ОбщийМодуль.ПолныеПрава.Модуль(96,44)}: Процедура или функция с указанным именем не определена (глЗначениеПеременной)"
Я как культурный человек поискал. Модуль серверный. В глобальном модуле функция определена. Работает только когда Сервер. Что ей надо - непонятно.
У меня под рукой есть "Управление торговлей", редакция 10.3 (10.3.67.2), у которой эти модули такие-же, по крайней мере упомянутые методы, и она прекрасно запускается в режиме управляемого приложения.
Подскажите, куда копнуть можно? Конфа с ошибкой чистая, правок там нет вообще.
Мне так-то первый вопрос решить надо, но второй меня тоже как-то напряг. Да, конфигурацию проверял на двух разных компах.
1 Omskdizel
 
23.07.21
15:11
Прикольно. Запустил проверку конфигурации с галкой "Управляемое приложение" и она в обеих ругается на этот метод. Вообще не понимаю... Права может неполные...
2 ДенисЧ
 
23.07.21
15:12
В управлемых формах глобальных переменных не сушествует...
3 Omskdizel
 
23.07.21
15:14
(2) Причем тут глобальные переменные, если ругается на функцию?
4 ДенисЧ
 
23.07.21
15:18
(3) А функция - это тоже в своём роде переменная )))
Смотри галки на модуле... И контекст вызова.
Может, она у тебя НаКлиенте определена, а управляемая форма хочет её с сервера позвать
5 Omskdizel
 
23.07.21
15:22
Такс... Сработало тяжелое наследие 7.5 и 7.7. Глобальный модуль - это тупо один из общих модулей и сам по себе нихрена не глобальный. Убил бы того, кто так модуль назвал... Попробую воткнуть функцию в модуль управляемого приложения.
6 Omskdizel
 
23.07.21
15:22
(4) Спасибо, что открыл мне глаза :)
7 Omskdizel
 
23.07.21
15:24
Я правильно понимаю, что модуль управляемого приложения выполняется и виден только на клиенте?
8 ДенисЧ
 
23.07.21
15:26
(7) "Модуль управляемого приложения исполняется только в тонком клиенте, в веб-клиенте и в толстом клиенте в режиме управляемого приложения. В нем нельзя использовать директивы компиляции (&НаКлиенте, &НаСервере и другие). Документация «1С:Предприятие 8.2."
https://its.1c.ru/db/pubessence/content/99/hdoc#:~:text=Модуль%20управляемого%20приложения%20исполняется%20только,%26НаКлиенте%2C%20%26НаСервере%20и%20другие).&text=Документация%20«1С%3AПредприятие%208.2.
9 Мультук
 
гуру
23.07.21
15:28
(7) Может просто взять обработку на обычных формах ? И начать решать вопрос с обменом ?
10 Omskdizel
 
23.07.21
15:34
(9) А где ее добыть на обычных формах?
11 ДенисЧ
 
23.07.21
15:35
Ну, регистрация изменений есть в самой ут10. Ну, 5 лет назад, как минимум, была )))
А так - в комплекте КД2 тоже вроде есть.
12 Omskdizel
 
23.07.21
15:35
В УТ 10 ее как раз нет. В 11 есть, в БП 3 есть.
13 Omskdizel
 
23.07.21
15:36
Так, в конвертации нашел, щас попробую.
14 Гипервизор
 
23.07.21
15:37
(12) Неправда.
15 ДенисЧ
 
23.07.21
15:43
(12) Черепашка!!!!
Есть она там. Искать надо.
16 Omskdizel
 
23.07.21
16:02
(14)(15)
Сорян, отвлекли.
Ребят, я все обменки облазил. Куда только не тыкался. Не нашел в 10.3 просмотр регистрации изменений. Можете сказать, куда ткнуться?
17 ДенисЧ
 
23.07.21
16:04
(16) Операции - обработки - смотрел?
А так, я видел в интерфейсе это в настройке узла плана.
18 ДенисЧ
 
23.07.21
16:04
ПРямо наверху кнопка была.
19 Omskdizel
 
23.07.21
16:06
(17) В настройке обмена точно отсутствует. В обработках нашел, спасибо!
20 Гипервизор
 
23.07.21
16:09
(19) Внезапно, да? Обработка лежит в обработках..
21 Omskdizel
 
23.07.21
16:10
(20) Непонятно, кто мог такое придумать :)) Смотрю в зарегистрированные объекты - а там все как обычно. И объектов то минимум. Не хочется думать, что ошибка в правилах обмена.
22 Kassern
 
23.07.21
16:11
(16) все там же, операции - обработки- регистрация изменений узла или как то так
23 Гипервизор
 
23.07.21
16:13
Давно бы уже эту ошибку про колонку в правилах поискали.
24 Omskdizel
 
23.07.21
16:15
(23) Дак он не пишет, какая колонка его не устраивает. Если бы написал...
25 Гипервизор
 
23.07.21
16:17
(24) Я так понимаю ошибка обмена в ЖР зарегистрировалась же? Что там конкретно в ошибке?
26 Новый1сник2
 
23.07.21
16:18
(0) если обмен через правила, посмотреть в ЖР какая ошибка и в КД2 исправить.
27 Новый1сник2
 
23.07.21
16:20
+ обмен с УТ 10.3 обычно слетает, если реквизит переименовали или удалили
28 серый КТУЛХУ
 
23.07.21
16:29
правила обмена. изначально зашиты в состав конфигурации (в макет). но могут в режиме редприятия выгружаться-загружаться. и исправляться как надо с помощью кд2.
а не весь тот муторный но страшно интересные путь, на который ты вствупил...
29 серый КТУЛХУ
 
23.07.21
16:31
ЗЫ: не(!) правила регистрации - т.к. там авторегистрация как правило в типовых отключена, и все по алгоритмам "регистрируется как надо" программно через подписки.
30 Omskdizel
 
23.07.21
17:03
(26) Что значит обмен через правила? Обмен идет через синхронизацию. Поэтому вываливается чисто программная ошибка, а не генерируемая обработкой КДшная ошибка, с указанием ПКО, ПКС и т.д.
Текст ошибки в УТ:
ВНЕШНЕЕ СОЕДИНЕНИЕ: Неверное имя колонки
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(8716)}:        Коллекция.Колонки.Добавить(ИмяПоля);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(8624)}:    КоллекцияГруппировки = ИнициализацияТаблицыПоКлючевымПолям(МассивКлючевыхПолейПоиска);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10239)}:                ЗагрузитьТабличнуюЧасть(Объект, Имя, ИнформацияОТипах, ПараметрыОбъекта, Правило);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(16428)}:            ПоследнийОбъектЗагрузки = ПрочитатьОбъект();
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(2706)}:        ПроизвестиЧтениеДанныхВРежимеВнешнегоСоединения(ЧтениеСообщения);

по причине:
Неверное имя колонки

Судя по "ВНЕШНЕЕ СОЕДИНЕНИЕ", ошибка на стороне БП возникает. Какой-то колонки не хватает именно там.
Да, обмен идет УТ -> БП, односторонний (ну, насколько синхронизация это позволяет).
31 Omskdizel
 
23.07.21
17:05
Я понимаю, что правила можно и КДшкой посмотреть. Они даже отдельными файлами в шаблоне лежат, если надо. Если загрузить структуру конфы и правила конвертации - КД покажет, что ссылка на свойство неправильная?
32 Omskdizel
 
23.07.21
17:07
Кстати, еще интересный момент. У них две пары баз УТ-БП, захотелось им развести юрлица по разным базам. Версии естественно одинаковые напрочь. И во второй паре проблем с обменом нет. Что как бы непонятно...
33 Новый1сник2
 
23.07.21
17:22
(30) синхронизации разные бывают, в последних через универсальный формат. в ут 10.3 (последнюю версию не смотрел) обмен идет по правилам обмена которые можно выгрузить в КД2 и посмотреть, подравнять.
34 Новый1сник2
 
23.07.21
17:26
(31) давно не смотрел КД2, но проверка там есть
35 Новый1сник2
 
23.07.21
17:32
(0) и с УТ 10.3 пора переходить на что то другое, скоро поддержка УТ 10.3 прекратится
36 Omskdizel
 
23.07.21
17:41
(35) Ну такое. Скорость работы УТ10 при небольшом количестве рабочих мест значительно выше скорости работы УТ11. Уж и не знаю почему. У меня на одном сервере УТ10 и БП3, при 20ти работающих в УТ, БП еле шевелится при одном пользователе. Уж и не знаю, что ей там надо.
37 Новый1сник2
 
23.07.21
18:09
(36) фирма 1С, обычно заранее предупреждает о сроках поддержки, например БП 2.0 максимум март следующего года. по УТ 10.3 не знаю, но думаю не дольше, а то и меньше УПП. считаю лучше заранее спланировать переход, в т.ч. по необходимости абгрейдить железо. делать это потом в  в пожарном порядке не вариант, лучше заранее сделать переход. скорость на ОФ конечно выше, но не стоит ждать когда они превратятся в тыкву.
38 Гипервизор
 
23.07.21
18:38
39 Omskdizel
 
03.08.21
15:31
Коллеги, таки не смог победить данную ошибку. Может кто что сможет подсказать еще какой-нибудь вариант попробовать?
Что делал:
(38) Сходил по ссылке, попробовал, выдало то же самое, только со стороны Бухгалтерии.
Неверное имя колонки
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(8716)}:        Коллекция.Колонки.Добавить(ИмяПоля);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(8624)}:    КоллекцияГруппировки = ИнициализацияТаблицыПоКлючевымПолям(МассивКлючевыхПолейПоиска);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10239)}:                ЗагрузитьТабличнуюЧасть(Объект, Имя, ИнформацияОТипах, ПараметрыОбъекта, Правило);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(16428)}:            ПоследнийОбъектЗагрузки = ПрочитатьОбъект();
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(2706)}:        ПроизвестиЧтениеДанныхВРежимеВнешнегоСоединения(ЧтениеСообщения);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(6946)}:        ОбработкаОбменаДаннымиВнешнееСоединение.ВыполнитьВыгрузкуДанных(ОбработкаДляЗагрузкиДанных);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(3939)}:            ВыполнитьДействиеОбменаДляУзлаИнформационнойБазыПоВнешнемуСоединению(Отказ,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(38)}:        ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5113)}:    Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1041)}:        ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1031)}:        ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

по причине:
Неверное имя колонки

Загрузил конфигурации и правила конвертации. Проверку обмен проходит. Никаких ошибок не выдает.

Попробовал убирать из регистрации отдельные объекты. Тут странная картина: Обязательно должны быть убраны СписаниеТоваров и ОтчетОРозничныхПродажах. Но недостаточно. Дальше копать в этом направлении не стал, ибо непонятно, что делать с полученным результатом.

Попробовал в режиме отладки включить Остановку по ошибке. По сути в обработку конвертации прилетает ответ, что был косяк и вызывает исключение. Текст ошибки выше. Сейчас попробую по точкам в ошибке половить что-нибудь, не знаю, что получится.

Может кто знает, куда еще копнуть? Есть какой-нибудь режим отладки у синхронизации?
40 Vstur
 
03.08.21
15:58
(39) Нет?

Ошибка 00-00386167
Код ошибки: 00-00386167
Код(ы) обращения: HL-360160
Статус: Принята к исправлению Зарегистрирована: 30.07.2021
Планируется исправить: "1C:Управление торговлей 10", версия 10.3.71

Описание:
При выполнении обмена УТ 10.3 - БП 3.0 (прямое подключение) возникает ошибка:
ВНЕШНЕЕ СОЕДИНЕНИЕ: Неверное имя колонки
41 Omskdizel
 
03.08.21
16:12
(40) Ух, блин... Печально, если так. Скорее всего так. Ибо накопал презабавнейшую вещь при отладке:

Вот упомянутая функция:

Функция ИнициализацияТаблицыПоКлючевымПолям(МассивКлючевыхПолейПоиска)
    Коллекция = Новый ТаблицаЗначений;
    Для Каждого ИмяПоля Из МассивКлючевыхПолейПоиска Цикл
        Коллекция.Колонки.Добавить(ИмяПоля);
    КонецЦикла;
    Возврат Коллекция;
КонецФункции


Проверил МассивКлючевыхПолейПоиска, обычный массив со строками. Т.е. тут ошибки быть не может в принципе! Нет никаких операций, которые ошибку могли бы генерировать. А она есть, на последнем элементе массива, "СтранаПроисхождения".
42 Vstur
 
03.08.21
16:18
(41) Опубликовали сегодня ночью...
43 Omskdizel
 
03.08.21
16:18
Ну кстати, судя по ошибке, лично мне непонятно, как ее можно исправить обновлением конфигурации... Тут скорее с платформой проблема. Код то правильный, в нем нет проблем.
44 Vstur
 
03.08.21
16:22
К пятнице релиз точно выйдет, уж больно много зафиксированных и исправленных ошибок накопилось
45 Omskdizel
 
03.08.21
16:33
Мда... Я протупил и слишком глубоко начал копать. Синхронизация шла через прямое подключение. Сделал через файл и все заработало. Что как бы удручает, ввиду потерянного времени... В следующий раз может умнее буду :)
46 Omskdizel
 
03.08.21
16:34
Vstur, спасибо огромное, а то бы я еще долго бился над этим кодом :)
47 hhhh
 
03.08.21
23:08
(43) куча вариантов с именем колонки. Может быть пробел, может не начинается на букву. Может дублируется имя.
48 Omskdizel
 
04.08.21
09:37
(47) Пардон, не написал, что массив я посмотрел. Пробелов и дублей там не было. Это были колонки с табличной части Товары из РеализацияТоваровУслуг.
49 TWAIN
 
20.09.21
00:45
Именно "дублируется имя".
Обновление облегчения не принесло, вернее работать то стало, но неправильно.
Итак, раньше с серии номенклатуры бралась ГТД и страна происхождения.
Потом в рамках прослеживаемости добавили страну происхождения и в табличную часть "товары".
В результате в обмене два одинаковых значения приемника конфликтовали с выдачей такой ошибки.
Сейчас они оставили только передачу ТЧ в ТЧ. Однако, не знаю как у кого, но у нас по-прежнему
склад заполняет серию и им нет желания еще и в ТЧ вносить то же самое.
Поэтому я написал такую вставку к полю, например для поступления товаров и услуг это №68:

<ПриВыгрузке>
Если ЗначениеЗаполнено(ОбъектКоллекции.СтранаПроисхождения) Тогда
    Значение = ОбъектКоллекции.СтранаПроисхождения
Иначе
    Если ЗначениеЗаполнено(ОбъектКоллекции.СерияНоменклатуры) И ЗначениеЗаполнено(ОбъектКоллекции.СерияНоменклатуры.СтранаПроисхождения) Тогда
        Значение = ОбъектКоллекции.СерияНоменклатуры.СтранаПроисхождения;
    Иначе
        Значение = Неопределено;
    КонецЕсли;
КонецЕсли;
</ПриВыгрузке>