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

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С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

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

60000 руб.

19.12.2022    12030    34    20    

21

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

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

5640 руб.

09.08.2017    151786    901    372    

548

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

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

29990 руб.

28.05.2024    1453    5    0    

7

SALE! 50%

Кассовые операции Файловый обмен (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 9720 руб.

19.08.2020    69120    339    80    

225

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

Кто получает документы в формате XML из различных сервисов ЭДО (формат 820 приказ ФНС 31 мая 2019) и набивает их вручную в 1С, тот наверняка хотел бы автоматизировать этот процесс. Поддержка конфигураций: Бухгалтерии 3, УПП 1.3, 1С:КА 2.4 и 1С:КА 2.5, УТ10, УТ11.4 и УТ11.5.

3600 руб.

11.02.2020    92701    301    156    

220

Документооборот и делопроизводство (СЭД) ЭДО и ОФД Учет документов Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Мощный, единый инструмент для решения всех проблем, связанных с переходом на ЭДО. Экономит бумагу и время - организует архив оригиналов первичных документов прямо в базе 1С, в прикрепленных файлах к соответствующим документам. С помощью комплексного отчета по ошибкам в ЭДО позволяет выявить и исправить все возможные ошибки - ошибочно сопоставленные документы, не подписанные документы, подписанные, но не загруженные в 1С документы. Автоматически сопоставляет не сопоставленные между собой документы. Может работать по расписанию и присылать отчет о состоянии архива/по ошибкам на почту. Взаимодействует напрямую с сервисами Диадок/СБИС, имеет интуитивно понятный интерфейс и учитывает 3-х летний опыт 40+ клиентов.

14880 руб.

17.12.2018    45667    65    59    

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

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


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