Елистратов Данила

32
Рейтинг

CagoBHuK
Данила Елистратов



  •   Регистрация: 21.07.2009 (14 лет назад)

  •   Был(а) на сайте: 24.04.2024

Друзья
  • Борис Васильев
  • Леонид Мельников
  • Дмитрий Малышев
  • Евгений Комиссаров
  • Сергей
  • Денис Афанасенко
  • Данила Елистратов
Подписчики 8

Рейтинг 32

Cacofonix. Связь 1С и asterisk

Инструменты и обработки Для всех Платформа 1С v8.3 Россия Абонемент ($m) Компонента, плагин (dll, vbs,..) Телефония, SIP

Какофоникс – это программный комплекс, позволяющий Вам управлять PBX asterisk из 1С. Какофоникс работает не на уровне SIP-клиента (софтфона), а на уровне менеджера asterisk.

1 стартмани

04.05.2011    25158    102    CagoBHuK    32       

12

Комментарии

DevВ бухгалтерии (3.0.107.34) При печати чека из документа реализации возникает ошибка#8 13.01.23 12:29
Экспериментальным методом пришел к выводу, что при каком-то сочетании драйвер-прошивка конкретные ККТ отказываются почему-то корректно воспринимать элемент CustomerDetail. При указании в нем любого из атрибутов Info (название организации) или INN (ИНН покупателя) касса возвращает как раз: "33h, Ошибка отправки тега 1256: Некорректные параметры в команде". Поэтому для определенных экземпляров подключаемого оборудования пришлось отключить отправку этих элементов.

Для чистоты эксперимента решили залить на ненормально работающий ККТ прошивку, идентичную ККТ, который работает нормально (модели - идентичные: ШТРИХ-M-01Ф). И вот тут-то благодаря словам кассового механика и вскрылось самое главное: оказывается, хотя обе прошивки и выпущены в 2022 году, причем, на неработающем ККТ прошивка новее, но заточены они под разные ФФД: неработающий - под 1.05, а работающий - под 1.2.

Дальнейшее гугление привело к тому, что в папке "C:\Program Files (x86)\SHTRIH-M\DrvFR5\Bin\1C" лежат два архива с ВК для 1С: shtrih-m_32_x32_64 и shtrih-m_34_x32_64. Каждый из архивов предназначен для своего ФФД: 1.05 и 1.2 соответственно. После загрузки вторым драйвером ВК из папки и указания ее соответствующему фискальному регистратору он, наконец-то, начал печатать всё как надо.
ОбменHTTP API Диадок. Загружаем в Диадок любой документ. Посредством POST и GET запросов#15 09.03.22 13:24
(11) Вас спасет PrepareDocumentsToSign. Отказ, ОписаниеОшибки - понятно. РезультатАвторизации содержит информацию по ключу АПИ и логину с паролем, с остальными параметрами должно быть понятно по их названию.

Код
Функция   PrepareDocumentsToSign(Отказ, ОписаниеОшибки, РезультатАвторизации, BoxId, MessageId, entityId, ДвоичныеДанныеСертификата, Руководитель) Экспорт
   PrepareDocumentsToSignRequest = Новый Структура;
   PrepareDocumentsToSignRequest.Вставить("BoxId", BoxId);
   //Заполняем структура черновика для патчинга
   DraftDocuments = Новый Массив;
   //Описываем наш черновик.
   DraftDocumentToPatch = Новый Структура;
   DocumentId = Новый Структура;
   DocumentId.Вставить("MessageId", MessageId);
   DocumentId.Вставить("EntityId", EntityId);
   DraftDocumentToPatch.Вставить("DocumentId", DocumentId);
   DraftDocumentToPatch.Вставить("ExtendedSigner", Новый Массив); 
   //ФИО руководителя
   ExtendedSignerDetails = Новый Структура;
   ExtendedSignerDetails.Вставить("Surname", Руководитель.Фамилия);
   ExtendedSignerDetails.Вставить("FirstName", Руководитель.Имя);
   ExtendedSignerDetails.Вставить("Patronymic", Руководитель.Отчество);
   ExtendedSignerDetails.Вставить("JobTitle", "Генеральный директор");
   ExtendedSignerDetails.Вставить("SignerType", 1);
   ExtendedSignerDetails.Вставить("SignerPowers", 5);
   ExtendedSignerDetails.Вставить("SignerStatus", 1);
   //Информация о подписанте
   ExtendedSigner = Новый Структура; 
   ExtendedSigner.Вставить("SignerCertificate", Base64Строка(ДвоичныеДанныеСертификата));
   ExtendedSigner.Вставить("ExtendedSignerDetails", ExtendedSignerDetails);
   DraftDocumentToPatch.ExtendedSigner.Добавить(ExtendedSigner); //Тоже необязательный
   DraftDocuments.Добавить(DraftDocumentToPatch);
   //Добавляем массив черновиков в запрос.
   PrepareDocumentsToSignRequest.Вставить("DraftDocuments", DraftDocuments);
   //Отправляем запрос.
   Тело = омСериализацияДесериализация.СериализоватьJson(PrepareDocumentsToSignRequest);
   Ответ = ВыполнитьЗапрос(Отказ, ОписаниеОшибки, "POST", "/PrepareDocumentsToSign", РезультатАвторизации, Тело);
   Возврат Ответ;
КонецФункции

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

Функция   ПодписатьДвоичныеДанные(Сертификат, ДанныеДляПодписания, ВключатьСертификатВСоставПодписи) Экспорт
   ТипыХранилищ = Новый Массив;
   ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
   ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.СертификатыПолучателей);
   МенеджерКриптографии = Новый МенеджерКриптографии("", "", ТипМенеджераКриптографии(), ИспользованиеИнтерактивногоРежимаКриптографии.НеИспользовать);
   Если ВключатьСертификатВСоставПодписи Тогда
      МенеджерКриптографии.ВключениеСертификатовВПодпись = РежимВключенияСертификатовКриптографии.ВключатьПолнуюЦепочку;
   КонецЕсли;
   //Нужно перевести все в двоичные данные.
   Если Ложь Тогда
      //Для формата
   ИначеЕсли ТипЗнч(ДанныеДляПодписания) = Тип("ДвоичныеДанные") Тогда   
      ЧтоПодписываем = ДанныеДляПодписания;
   ИначеЕсли ТипЗнч(ДанныеДляПодписания) = Тип("Строка") Тогда
      ЧтоПодписываем = ДанныеДляПодписания;
   КонецЕсли;
   //Пробуем подписать
   ВозвратноеЗначение = МенеджерКриптографии.Подписать(ЧтоПодписываем, Сертификат);
   Возврат ВозвратноеЗначение;
КонецФункции
DevИнтересная задача на Yandex cup 2021#25 12.10.21 17:25
(21) В таком случае breadth-first search простым методом стека, делается буквально несколькими строчками. Описано тут.
DevИнтересная задача на Yandex cup 2021#10 12.10.21 12:22
Автор, не увидел в твоем коде ни эвристики, ни A*-search. Подобие эвристики есть в последнем куске кода, где "мест где мы еще небыли", но вообще рекомендую прочитать про оптимальные алгоритмы поиска кратчайшего пути, и в частности про эвристику. Решение, предложенное автором, не тянет даже на четверочку.
DevПреобразование строки к URL#23 01.09.21 15:47
Указанное ниже значение
0105010459005216211A%BgFSXGF_qT
Должно преобразоваться в
0105010459005216211A%25BgFSXGF_qT
А преобразуется в
0105010459005216211A%25BgFSXGF%5FqT
Проверял тут
https://url-encode-online.rocks/urlencode.php
ПубликацииКлиент API ГИС МТ (ИС МП) "Честный знак". Чтение данных и отправка документов. Работа на стороне сервера.#21 19.08.21 14:50
С текущей реализацией не работает. Ключ получает только по V3, список документов отправляет к V4, при этом данные не возвращаются, возвращается мусор. Если у кого-то есть свежее описание адресов для обращения, укажите, пожалуйста.
ОбменРазработка CMS на платформе 1С 8 (Демо-база доступна для скачивания)#28 28.12.19 14:16
Статические данные хранить бессмысленно. А как насчет хранения динамических данных в базе: новостей, форума и так далее?