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

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С из ФНС в документы БП, УНФ, ERP, КА и УТ

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

213

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

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

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

14880 руб.

17.12.2018    44807    62    51    

75

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

3600 руб.

09.08.2017    149034    874    372    

531

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

15600 руб.

13.04.2018    83011    394    9    

429

Государственные контракты в УТ 11.5, КА 2.5.11 с выгрузкой в ЕИС (Госзакупки)

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

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

40800 руб.

19.12.2022    10651    21    19    

17

Групповая выгрузка и загрузка файлов из 1С в XML для ЭДО в каталог по приказу №820 ФНС (для УТ 10.3/11, КА2, ERP2, БП3, УНФ, УПП1.3, Розница2.3). Поддержка маркировки. Прослеживание товаров.

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

Групповая выгрузка файлов из 1С в формате XML для ЭДО в каталог по приказу №820 ФНС для Контур.Диадок, СБИС и других провайдеров ЭДО. Поддержка УНФ 1.6, УНФ 3.0 Поддержка УТ 10.3, УПП 1.3 Поддержка Розница 2.3 Добавлена выгрузка непосредственно из документа

18000 руб.

15.12.2022    6937    108    26    

18

Загрузка документов поступления из 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    89738    286    156    

209
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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);
Показать
Оставьте свое сообщение