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

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    66059    307    73    

212

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

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

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

14880 руб.

17.12.2018    44737    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    148921    873    372    

531

Групповая выгрузка и загрузка файлов из 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    6873    108    26    

17

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

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

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

40800 руб.

19.12.2022    10581    21    19    

17

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

428

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

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