Карты, деньги, Диадок

26.03.24

Интеграция - ЭДО и ОФД

Интеграция с СКБ-Контур - Диадок, вылетает с ошибкой SDBL. Краткий разбор проблемы.

Проблема:

На одном из наших предприятий используется УТ Управление торговлей, редакция 11 (11.5.10.63).

Платформа - 1С:Предприятие 8.3 (8.3.23.1912)

В конфу загружена обработка интеграции СКБ-Контур - Диадок, которая с виду-то запускается, но при попытке передать документ на подпись, намекает на некоторую проблему.

 

 

Попытки обратиться в техподдержку СКБ-Контур привели к глумливому их ответу, насчет "Очистить серверный кэш", перезагрузить компьютер и вот все это.

Хотел бы я знать, понимает ли сама техподдержка СКБ-Контура, что такое "серверный кэш" или она просто радуется красивому слову.

Впрочем, ритуальные танцы с очисткой всякого рода кэшей, перезагрузкой сервера и прочее, были проделаны, но к успеху не привели.

Коллега даже с размаху установил новую и самую модную версию этой обработки.

Коронный совет любой техподдержки - выполнить ТиИ.

Разумеется, все это - тщета и суета сует.

 

Но делать-то что-то надо.

Делаем:

Развёртываем тестовую базу, на тестовом сервере, убеждаемся, что ошибка - на месте. Делаем вывод, что её появление не зависит от настройки сервера, регистрации базы в кластере, наличия пресловутого "серверного кэша" и всего вот этого, о чем нам сообщает техподдержка.

Разглядываем пациента.

Обработка, предоставленная нам поставщиком, представляет собой самодостаточную конструкцию, которая хранит в макетах свои запчасти, вытаскивая их при старте из этих макетов.

 

 

Поэтому, конечно, отладка затруднена.

Нельзя просто взять и поставить точку останова, с целью понять, что-же происходит внутри. Ну или там устроить "Остановку по ошибке"

Поэтому, настраиваем техножурнал, с целью поймать строку сбойного кода. Я совсем не мастер техножурнала, однако предположил, что мы ловим ексцепшены, обращения к SQL, а также SDBL, раз про него намекает исходное сообщение об ошибке.

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">

<dump location="C:\1c\SPK_dumps" create="1" type="0" externaldump="1"/>
<log location="C:\1c\SPK_logs" history="12">
<event>
<eq property="Name" value="EXCP"/>
<eq property="p:processName" value="ugmetall_trade_2022_dev2"/>
</event>
<event>
<eq property="Name" value="SDBL"/>
<eq property="p:processName" value="ugmetall_trade_2022_dev2"/>
</event>
<event>
<eq property="Name" value="DBMSSQL"/>
<eq property="p:processName" value="ugmetall_trade_2022_dev2"/>
</event>
<property name="all">
        
</property>
    
</log>
</config>

Провоцируем ошибку и где-то в глубинах этого страшного стека вызовов находим:

 

Наблюдаем, что в темных глубинах есть обработка ВнешняяОбработка.КонтурДиадокСтандартУФ

Внутри модуля которой, в строке 2222 имеется "Если Выборка.Следующий() Тогда", в котором сбой и происходит.

Выгружаем оную обработку из макета (а нам еще следует догадаться, в каком макете она притаилась), и видим вот такое:

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

Сразу посмотрим в синтакс-помощник и сообщим, что в отборе нужно задать ключ "Пользователь" а не "ИмяПользователя". Еще соображение, а также если мы отбираем по пустому имени пользователя то и удалять должны тоже по нему ?

Но черт с ним, пускай у СКБ-контура голова болит об их коде.

Нас волнует другое кино, сбой происходит на вызове метода Следующий() ХранилищаОбщихНастроек.

Еще интереснее, что ни до какого SDBL или тем более DBMSSQL, оно не доходит.

Что любопытно, если мы укажем просто Выбрать() без отбора, то код вполне себе работает.

Также оно работает, если в структуре отбора нет "КлючНастроек".

И вообще, сообщение насчет "CAST" наводит на мысль, что проблема с хранилищем общих настроек, но вся остальная конфа-то при этом исправно работает.

Что с этим делать?

Поиск по конфе по слову "ХранилищеОбщихНастроек.Выбрать(" показал, что такая конструкция в УТ 11.5 вообще не используется, а применяется Загрузить().

Точнее, найдено одно место и кого-то из коллег поджидает сюрприз

 

 

Варианты:

1. Вырезать вовсе обращение к ХранилищуОбщихНастроек, возвращать Неопределено, типа "я ничего не нашел", там выше по стеку вызовов предусмотрена обработка такого случая. Это мой выбор. Дешево. надежно, практично.

2. Залепить вот такое

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

Загружаем заколхоженную нами служебную обработку в макет, откуда выгружали.

Загружаем Контур-ЭДО в "Печатные формы отчеты и обработки"

Ура, работает что первый, что второй вариант.

 

Заключение:

Проблема побеждена, документы на подпись передаются, ура.

Но все же, господа, что это было?

Любое обращение к ХранилищуСтандартныхНастроек.Выбрать(Отбор), если в отборе присутствует ключ "КлючНастроек", приводит к ошибке и падению клиентского сеанса.

При этом, в ТЖ не пишется даже события SDBL.

Причем в случае, пустого отбора, код вполне работает и все события в ТЖ, как положено. пишутся.

Это очень похоже на ошибку платформы?

Меня не покидает ощущение неправильности, прошу советов, как надо было сделать правильно.

См. также

Бюджетный учет ЭДО и ОФД Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Расширение для автоматизации процесса подписания электронных документов в мобильном приложении "Госключ" с видом подписи УКЭП/УНЭП, которое подходит для электронного подписания бухгалтерских документов, список которых утвержден в приказе Минфина №61н «Об утверждении унифицированных форм электронных документов бухгалтерского учета…»

500000 руб.

06.11.2024    1175    1    0    

1

Кассовые операции ЭДО и ОФД Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Платные (руб)

Согласно 54-ФЗ по правилам ведения кассовых операций необходимо оформлять приходные кассовые ордера (ПКО) и расходные кассовые ордера (РКО) на основании чеков ККМ. Все данные о чеках, можно взять на сайте оператора фискальных данных (ОФД). Обработка загрузки данных из ОФД в 1С сделает за вас в 1С - ПКО и РКО, Операции по платежным картам или Отчет о розничных продажах (может создать номенклатуру в 1С, указать налоги и др. реквизиты в документах в зависимости от налогообложения ККМ в торговой точке).

6000 руб.

09.08.2017    152714    912    372    

554

Кассовые операции Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

В публикации размещены специализированные обработки для загрузки кассовых чеков в базах 1С (для локальных баз): 1С:БП 3.0, 1С:УНФ 3.0, 1С:КА. 2.5, 1С:ERP Управление предприятием, ред. 2 и 1С:УТ 11.5. Вы просто сканируете QR коды с бумажных и электронных чеков c помощью мобильного приложения ФНС и чеки автоматически (без ручного ввода) загружаются в документы 'Авансовый отчет', 'Расходы предпринимателя', 'Путевой лист', 'Приходная накладная', 'Поступление (акты, накладные, УПД)', 'Приобретение товаров и услуг', 'Отчет о розничных продажах' и 'Поступление денежных документов'.

12960 руб.

19.08.2020    69920    346    80    

229

Регламентированный учет и отчетность Обмен с ГосИС ЭДО и ОФД Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Работаете по контрактной схеме, сталкивались с проблемой, что в контракте жестко указаны наименование, цена, единица измерения товара. И не все готовы создавать новую номенклатуру под каждый контракт или менять наименование и единицу измерения для уже имеющейся. Тем более, бывает так, что контракт - это формальность. Контракт не описывает жесткие условия поставки, нужно соблюсти правильность в предоставлении документов. Данное решение позволит вам оперировать своей номенклатурой при оформлении реализаций по государственному контракту в УТ 11.5 и КА 2.5.11, в то же время выводить на печать документы, соответствующие данным контракта. Реализована выгрузка для сайта госзакупок (ЕИС) по 44-ФЗ.

60000 руб.

19.12.2022    12581    35    20    

21

ЭДО и ОФД Учет документов 8.3.14 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

ПОДПИСЫВАЙТЕ ДОКУМЕНТЫ С ФИЗЛИЦАМИ ПО СМС. Ваши клиенты и сотрудники смогут подписывать документы простой электронной подписью (ПЭП) без визита к вам в офис. С телефона или компьютера без установки приложений и регистраций.

29990 руб.

28.05.2024    1656    5    0    

7

ЭДО и ОФД Обмен с ГосИС Программист Бухгалтер Пользователь 8.3.14 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Рабочее место для работы с ЭДО из 1С : Диадок, СБИС, ЭДО Лайт (Lite), Такском, Signatura.pro, Астрал.ЭДО, ГИС МТ (Честный знак, ЦРПТ). Загрузка и отправка УПД, УКД, ТОРГ12, Акта в 1С (сохранение в файл и последующая загрузка через личный кабинет не требуется). Также поддерживается: отправка печатных форм, произвольных файлов, подписание, отклонение, аннулирование документов. Поддержка МЧД для СБИС и Диадок. Решение реализовано в виде расширения на управляемых формах. Для обычных форм - внешняя обработка. Поддержка Linux.

3600 руб.

16.12.2020    41114    260    199    

92
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 2689 27.03.24 00:00 Сейчас в теме
Интересный материал.
Демонстрация полной некомпетентности ТП СКБ-Контур
2. zakharov_yuri 42 27.03.24 07:22 Сейчас в теме
(1) Ну я бы не сказал так, что "полной". Здесь проблема какбэээ..... обработка поставщика работает ведь на других конфигурациях. На БП Корп, например. Спотыкачка именно на моей конфе УТ.
И здесь еще вопрос - все-таки это может у меня конфа УТ - побитая ? Или это теперь особенность платформы? Или особенность УТ ?
Собственно - "Что произошло?" - это и есть вопрос статьи.
3. mussolene 23 29.03.24 09:28 Сейчас в теме
Доброго дня. Есть ошибка зарегистрированная на багборде 1С 000147977
Которая исправлена в платформе 8.3.23.2040.
itmind; zakharov_yuri; +2 Ответить
4. mussolene 23 29.03.24 09:33 Сейчас в теме
Поэтому, конечно, отладка затруднена.

Нельзя просто взять и поставить точку останова, с целью понять, что-же происходит внутри. Ну или там устроить "Остановку по ошибке"


У обработки есть галочка в системных настройках. Режим отладки.
При включении и размещении обработки на общем ресурсе (доступ у клиента и у сервера). Все обработки выгружаются в указанный каталог и отладку можно провести без примочек с ТЖ.
harmless; +1 Ответить
Оставьте свое сообщение