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

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С:БП, 1С:УНФ, 1С:ERP, 1С:КА и 1С:УТ

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

19.08.2020    65395    303    73    

211

Загрузка в 1С:Бухгалтерию 3.0, 1С:КА 2.4, 2.5, УНФ 1.6/3.0 данных из ОФД о денежных поступлениях (чеках)

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

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

3600 руб.

09.08.2017    148283    869    372    

528

Выгрузка УПД реализации в xml ФНС для загрузки в ЭДО: Диадок, СБИС, Такском, КОРУС, Астрал и прочие. Обработка на управляемых формах для БП 3.0, УНФ 1.6 / 3.0, УТ 11.4 / 11.5, КА 2, ERP 2 (Приказ ФНС №820 от 19.12.2018, 736 от 12.10.2020)

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

Выгрузка УПД, товарной накладной ТОРГ-12, акта, счета-фактуры по реализации (в БП сч-ф на аванс) в xml-файл в формате ФНС приказ 820 от 19.12.2018. Выгрузка УКД и корректировочного счета-фактуры в xml-файл в формате ФНС приказ 736 от 12.10.2020. Выгрузка товарной накладной в xml-файл ФНС приказ 551 от 13.11.2015, редакция 08.04.2019. Выгрузка акта приемки-сдачи работ (услуг) в xml-файл ФНС приказ 552 от 13.11.2015, редакция 08.04.2019. Добавлена выгрузка счетов на оплату по документам ЗаказПокупателя (в УНФ), ЗаказКлинета (в УТ / КА / ERP), СчетНаОплатуПокупателю (в БП). Добавлена обработка Выгрузка УПД c документов реализации 1С в Контур.Диадок по API.

12000 руб.

13.04.2018    82457    392    9    

427

Акцизы на сахаросодержащие напитки

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

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

14400 руб.

16.10.2023    1174    10    0    

9

Загрузка документов поступления из XML формата 820 (Контур.Диадок) в 1С:УТ10/11, БП 3.0, КА2.5, УПП1.3 и обработка выгрузки УПД в Контур Диадок и СБИС для 1С:Бухгалтерии 3.0

ЭДО и ОФД Загрузка и выгрузка в Excel Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

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

3600 руб.

11.02.2020    88934    283    156    

207

ЭДО: организация архива оригиналов первичных документов, комплексный отчет по ошибкам

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

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

14880 руб.

17.12.2018    44438    58    51    

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