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

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.

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

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

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

См. также

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С:Управление нашей фирмой 8, ред. 3.0', '1С:Комплексная автоматизация, ред. 2.5', ‘1С:ERP Управление предприятием, ред. 2’ и ‘1С:Управление торговлей, ред. 11.5’. Вы просто сканируете QR коды с бумажных и электронных чеков c помощью мобильного приложения ФНС и чеки автоматически (без ручного ввода) загружаются в документы 'Авансовый отчет', 'Расходы предпринимателя', 'Путевой лист', 'Приходная накладная', 'Поступление (акты, накладные, УПД)', 'Приобретение товаров и услуг', 'Отчет о розничных продажах' и 'Поступление денежных документов'.

12960 9720 руб.

19.08.2020    66859    320    73    

215

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

Расширение для Бухгалтерии предприятия 3.0 «Акцизы на сахаросодержащие напитки» предназначено для автоматизированного учета сумм акцизов по реализованным сахаросодержащим напиткам с 01 июля 2023 года. Позволяет выделить суммы акциза в первичных документах («Реализация товаров и услуг», «Корректировка реализации»), сформировать проводки по начислению акциза, а также сформировать и отправить корректные документы по ЭДО.

14400 руб.

16.10.2023    1551    14    0    

13

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

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

40800 руб.

19.12.2022    10943    24    19    

17

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

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

14880 руб.

17.12.2018    45030    63    51    

76

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

Согласно 54-ФЗ по правилам ведения кассовых операций необходимо оформлять приходные кассовые ордера (ПКО) и расходные кассовые ордера (РКО) на основании чеков ККМ. Все данные о чеках, можно взять на сайте оператора фискальных данных (ОФД). Обработка загрузки данных из ОФД в 1С сделает за вас в 1С - ПКО и РКО, Операции по платежным картам или Отчет о розничных продажах (может создать номенклатуру в 1С, указать налоги и др. реквизиты в документах в зависимости от налогообложения ККМ в торговой точке). Проверено на: OFD.RU / Первый ОФД / Такском / Платформа ОФД / Ярус / ОФД Яндекс / ОФД Астрал /ОФД СБИС / Гарант ОФД / КОРУС ОФД / КОНТУР ОФД / ОФД АО Тандер / ИнитПро / Группа Элемент/

3600 руб.

09.08.2017    149658    881    372    

534

ЭДО и ОФД Обмен с ГосИС Программист Бухгалтер Пользователь 8.3.14 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 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    39104    248    199    

89
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 3126 27.03.24 00:00 Сейчас в теме
Интересный материал.
Демонстрация полной некомпетентности ТП СКБ-Контур
2. zakharov_yuri 40 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 Ответить
Оставьте свое сообщение