Как поделиться ссылкой на документ в обработке Диадок

05.12.23

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

Даём пользователям функционал, по которому они могут делиться ссылками на документы Диадок между собой.

От наших любимых пользователей, которые работают с обработкой Диадок, поступает много предложений, как хороших, так и не очень. В один солнечный весенний день поступило письмо с предложением как-нибудь облегчить им работу и сделать функционал для удобного обмена документами. Т.к. они много пересылают в письмах друг другу информацию для обработки документов, а идентифицируют документы по номеру, дате, контрагенту и сумме платежа., то такой обмен данными не очень удобный т.к. на поиск документа у второго пользователя уходит много времени. Поэтому решили сделать обмен ссылками на документы. То есть дать пользователю возможность привычным образом через функционал «Получить ссылку» (Ctrl + F11) скопировать ссылку, переслать второму пользователю, а он по этой ссылке открыть документ.

Постановка задачи.

  1. Пользователь должен привычным способом получить ссылку на документ в виде текста (чтобы можно было отправить эту ссылку в мессенджере или по почте).
  2. Второй пользователь, который получает ссылку мог воспользоваться штатным функционалом «Перейти по ссылке» (Shift + F11), вставить ссылку и отрыть документ.

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

Вот так это выглядит итоговый результат:

 

 

Реализация.

Для получения строки со ссылкой на документ воспользуемся обработчиками формы ОбработкаПолученияСпискаНавигационныхСсылок и ОбработкаПолученияНавигационнойСсылки. Обработчики доступны, начиная с версии 8.3.19 (см. подробнее).

На форму ФормаПакетаУправляемая добавляем обработчики с кодом:

Формируем список навигационных ссылок, который покажем в системном диалоге. Будем формировать ссылку на документ ЭДО в 1С по уникальному идентификатору ссылки, а также сформируем ссылку на документ в веб версию Диадок.

&НаКлиенте

Процедура ОбработкаПолученияСпискаНавигационныхСсылок(СписокНавигационыхСсылок, КлючПоУмолчанию)   

СписокНавигационыхСсылок.Очистить();
СписокНавигационыхСсылок.Добавить("ДокументЭДО", "Документ " + ТекущийДокумент.ИмяФайла);
СписокНавигационыхСсылок.Добавить("ДокументЭДОWeb", "Ссылка в Диадок " + ТекущийДокумент.ИмяФайла);Q95;

КонецПроцедуры

В обработчике ОбработкаПолученияНавигационнойСсылки сформируем значения навигационных ссылок:

&НаКлиенте

Процедура ОбработкаПолученияНавигационнойСсылки(Ключ, Представление, НавигационнаяСсылка, СтандартнаяОбработка)
 Если Ключ = "ДокументЭДО" Тогда
  НавигационнаяСсылка = ЭтотОбъект.ПолучитьНавигационнуюСсылкуОбработки()
   + СтрШаблон("?ДокументЭДО=%1", ТекущийДокумент.Идентификаторы.ДокументЭДО.УникальныйИдентификатор());
  
  СтандартнаяОбработка = Ложь;
  ИначеЕсли Ключ = "ДокументЭДОWeb" Тогда
   НавигационнаяСсылка = МетодСервераБезКонтекста(Истина, "Модуль_Ядро().Документы_СсылкаВБраузере", ТекущийДокумент);
   СтандартнаяОбработка = Ложь;
  Иначе
   Возврат;
  КонецЕсли;

КонецПроцедуры

Половина задачи сделана. Теперь нужно реализовать функционал «Перейти по навигационной ссылке».

В модуль управляемого приложения добавляем обработчик ОбработкаПереходаПоНавигационнойСсылке.

В обработчике прописываем логику:

  1. Проверяем полученную ссылку на то, что она ссылается на обработку Диадок.
  2. Далее если среди открытых окон есть окно с обработкой Диадок, то формируем оповещение "Диадок_ОткрытьДокументЭДО" с параметрами из навигационной ссылки.
  3. Если окно с обработкой не открыто, то открываем форму обработки с параметрами формы из параметров навигационной ссылки.
Процедура ОбработкаПереходаПоНавигационнойСсылке(ДанныеПереходаПоНавигационнойСсылке, СтандартнаяОбработка)

 Если СтрНайти(ДанныеПереходаПоНавигационнойСсылке.ОтносительнаяНавигационнаяСсылка,
  "e1cib/app/Обработка.КонтурЭДО?") Тогда

 структураПараметрыНавигационнойСсылки = Новый Структура();

 Для Каждого КлючИЗначение Из ДанныеПереходаПоНавигационнойСсылке.ПараметрыНавигационнойСсылки Цикл
  структураПараметрыНавигационнойСсылки.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);                   
 КонецЦикла;
                             
 ОткрытыеОкна = ПолучитьОкна();
 Для Каждого ОткрытоеОкно Из ОткрытыеОкна Цикл
  Если СтрНайти(ОткрытоеОкно.Заголовок, "АРМ.Диадок") Тогда
   СтандартнаяОбработка = Ложь;
   // в новых версиях Диадок добавлена проверка на идентификатор окна
   // поэтому нужно определить Источник
   СодержимоеОкна = ОткрытоеОкно.Содержимое;
   УИИсточник = ?(СодержимоеОкна.Количество(), СодержимоеОкна[0].УникальныйИдентификатор, Неопределено);
   Оповестить("Диадок_ОткрытьДокументЭДО", структураПараметрыНавигационнойСсылки, УИИсточник);
   Прервать;
  КонецЕсли;      
 КонецЦикла;

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

КонецПроцедуры

Теперь в ФормаУправляемая обработки Диадок необходимо добавить процедуру обработки оповещение и обработки параметров при открытии формы.

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

НовыйРеквизит_СтрокаСписка = Новый РеквизитФормы("СтрокаСписка",
Новый ОписаниеТипов(), , "Строка списка при открытии по ссылке");
МассивНовыхРеквизитов.Добавить(НовыйРеквизит_СтрокаСписка);

СтрокаСписка = Неопределено;
Если Параметры.Свойство("ДокументЭДО", СтрокаСписка) Тогда
 ЭтотОбъект["СтрокаСписка"] = СтрокаСписка;
КонецЕсли;

Дальше после выполнения авторизации на форме запускаются разные обработчики. В последний из запускаемых обработчиков ОжиданиеОплатыСервисаИОшибокМЧД подключил свой обработчик ожидания ОбработчикОткрытияДокументаЭДОПоСсылке:

&НаКлиенте
Процедура ОжиданиеОплатыСервисаИОшибокМЧД()
…

 // подключаем обработчик перехода по ссылке документа ЭДО
 ПодключитьОбработчикОжидания("ОбработчикОткрытияДокументаЭДОПоСсылке", 0.1, Истина);

КонецПроцедуры

 

Текст процедуры:

&НаКлиенте
Процедура ОбработчикОткрытияДокументаЭДОПоСсылке()

 // параметр перезаписываем структурой документа, который нужно открыть          
 ЭтотОбъект["СтрокаСписка"] = ПолучитьСтрокуСпискаНаСервере(ЭтотОбъект["СтрокаСписка"]);
 ОжиданиеОткрытияДокументовПоСсылке();

КонецПроцедуры

Функция ПолучитьСтрокуСпискаНаСервере возвращает структуру документа с такими же данными, как если бы мы открывали документ из списка документов формы Диадок:

&НаСервере
Функция ПолучитьСтрокуСпискаНаСервере(Параметр)
 
 // при пустом значении параметра значит, что мы просто открываем форму
 Если Не ЗначениеЗаполнено(Параметр) Тогда
  Возврат Неопределено;
 КонецЕсли;

 // получаем документ ЭДО, который нужно открыть  по уникальному идентификатору
 ДокументЭДО = Справочники.Диадок_Документы.ПолучитьСсылку(
    Новый УникальныйИдентификатор(Параметр.ДокументЭДО));

 // формируем данные аналогично если бы открывали документ из списка
 Ядро = Модуль_ЯдроНаСервере();
 Результат = Ядро.Контракт_СтрокаСпискаДокументов();
 ДанныеДокумента = Ядро.Документы_СохраненныйДокумент(ДокументЭДО);
 ПараметрыПоиска = Ядро.Контракт_ПараметрыПолученияСпискаДокументов();
 ОтборПоПакету   = Новый Структура("BoxID, LetterID, DocumentID, ИдентификаторПакета");
 ЗаполнитьЗначенияСвойств(ОтборПоПакету, ДанныеДокумента.Идентификаторы);
 ОтборПоПакету.Вставить("ИдентификаторПакета", ОтборПоПакету.LetterId);
 
 ПараметрыПоиска.Вставить("Режим",
    ?(ДанныеДокумента.Направление = "Входящее", "ПолученныеДокументы", "ОтправленныеДокументы"));
 ПараметрыПоиска.Вставить("ПоказыватьЗавершенные", Истина);
 ПараметрыПоиска.Вставить("ОтборПоПакету", ОтборПоПакету);
 ПараметрыПоиска.Вставить("НачалоПериода", ДокументЭДО.ДатаЗагрузки - 1);
 ПараметрыПоиска.Вставить("КонецПериода", ДокументЭДО.ДатаЗагрузки + 1);
 
 ДанныеПолученныхДокументов = Ядро.СписокДокументов_Документы(ПараметрыПоиска);
 СтрокаПоДокументу = ДанныеПолученныхДокументов.Найти(ДокументЭДО, "ДокументЭДО");
 ЗаполнитьЗначенияСвойств(Результат, СтрокаПоДокументу);
 
 Если ЗначениеЗаполнено(СтрокаПоДокументу.LetterId) Тогда
   ИдентификаторПакета = СтрокаПоДокументу.LetterId;
 ИначеЕсли ЗначениеЗаполнено(СтрокаПоДокументу.Документ) Тогда
   ИдентификаторПакета = СтрокаПоДокументу.Документ.УникальныйИдентификатор();
 Иначе
   ИдентификаторПакета = Новый УникальныйИдентификатор;
 КонецЕсли;
 
 Результат.Ключ = ИдентификаторПакета;
 
 Возврат Результат;

КонецФункции

В процедуре ОжиданиеОткрытияДокументовПоСсылке открываем форму пакета с документом если наш реквизит заполнен данными:

&НаКлиенте
Процедура ОжиданиеОткрытияДокументовПоСсылке()
 
Если ЗначениеЗаполнено(ЭтотОбъект["СтрокаСписка"]) Тогда                           
  ОткрытьФормуПакета(ЭтотОбъект["СтрокаСписка"]);
 КонецЕсли;

КонецПроцедуры      

В процедуру ОбработкаОповещения добавил обработку своего оповещения, которое отрабатывает, когда форма обработки Диадок уже открыта и нужно только открыть пакет с документом:

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

…

 ИначеЕсли ИмяСобытия = "Диадок_ОткрытьДокументЭДО" Тогда
   ЭтаФорма["СтрокаСписка"] = Параметр;         
   ОбработчикОткрытияДокументаЭДОПоСсылке();
 КонецЕсли;                                               

КонецПроцедуры

На этом всё. Получили желаемый результат на требование пользователей.

Диадок

См. также

Загрузка чеков ФНС в документы 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    65504    304    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    148512    870    372    

529

Выгрузка УПД реализации в 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    82513    392    9    

427

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

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

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

14400 руб.

16.10.2023    1186    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    89097    283    156    

207
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. fatman78 17 17.10.23 15:23 Сейчас в теме
Если используется подсистема Диадок, чтобы собрать ссылку на документ в браузере не обращаясь к обработке Диадок достаточно собрать ее по шаблону:

		Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
		               |	Диадок_Документы.Ссылка КАК Ссылка,
		               |	Диадок_Документы.BoxId КАК BoxId,
		               |	Диадок_Документы.LetterId КАК LetterId,
		               |	Диадок_Документы.DocumentId КАК DocumentId
		               |ИЗ
		               |	Справочник.Диадок_Документы КАК Диадок_Документы
		               |ГДЕ
		               |	Диадок_Документы.Документ = &Объект
		               |	И НЕ Диадок_Документы.ПометкаУдаления";
		
	
	Запрос.УстановитьПараметр("Объект", Документ); 
	
	Результат = Запрос.Выполнить();
	
	Если Результат.Пустой() Тогда 
		Возврат Неопределено;
	КонецЕсли;	

	СтрокаШаблона = "https://diadoc.kontur.ru/%1/document/show?letterId=%2&documentId=%3";
	Выборка = Результат.Выбрать();
	Выборка.Следующий();
	Возврат СтрШаблон(СтрокаШаблона,Выборка.BoxId,Выборка.LetterId,Выборка.DocumentId);
Показать
Оставьте свое сообщение