Имя: Пароль:
1C
 
Диадок, модуль 1С - заполнение полей с дополнительной информацией
0 Vovik
 
28.04.25
12:45
На инфостарте убрали публикацию (Мы как партнер фирмы "1С" не имеем права на своей площадке размещать разработки для автоматизации работы с сервисами, входящими в список конкурирующего ПО. Разработки Тензора и Контура включены в такой список, поэтому мы не можем размещать вашу публикацию у нас на площадке.), а статья полезна. Оставлю здесь для поиска.

Некоторые контрагенты для настройки электронного обмена документами требуют заполнения специальных полей  ИнфПолФХЖ1 и ИнфПолФХЖ2 дополнительной информацией.
Например:
https://kazan.megastroy.com/edo

- В дополнительном текстовом поле документа ЭДО (XML) должен быть указан GLN магазина «Мегастрой» согласно нижеприведенному примеру:


<ИнфПолФХЖ1>
  <ТекстИнф Идентиф="грузополучатель" Значен="4604985999975" />
  </ИнфПолФХЖ1>
</СвСчФакт>


- В дополнительном текстовом поле табличной части документа ЭДО (XML) должны быть указаны международные штрих-кода номенклатуры EAN-13 или EAN-8 формата согласно нижеприведенном примере:


<ТаблСчФакт>
     <СведТов НалСт="X" НомСтр="1" X" ОКЕИ_Тов="X" КолТов="X" ЦенаТов="X" СтТовБезНДС="X" СтТовУчНал="X">
     <Акциз>
        <БезАкциз>X</БезАкциз>
    </Акциз>
    <СумНал>
        <СумНДС>X</СумНДС>
    </СумНал>
    <ИнфПолФХЖ2 Значен="4610001691112" Идентиф="штрихкод"/>
</СведТов>  


А ниже привожу рабочий пример кода в подключаемом модуле:
1 Vovik
 
28.04.25
12:45
Процедура УПД_ДобавитьИнфПолФХЖ1(Content, Key, Value)
    
    Если НЕ ЗначениеЗаполнено(Value) Тогда
        Возврат;
    КонецЕсли;
    
    AdditionalInfoId = Content.AdditionalInfoId;
    
    ОсновнойМодуль.ДобавитьИнформационноеПоле(AdditionalInfoId, Key, Value);

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

//-->20210516
Функция _ПолучитьШтрихКод(_номенклатура)
    Если НЕ ЗначениеЗаполнено(_номенклатура) Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                    |    ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод
                    |ИЗ
                    |    РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
                    |ГДЕ
                    |    ШтрихкодыНоменклатуры.Номенклатура = &Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура",_номенклатура);
    Рез = Запрос.Выполнить().Выгрузить();
    Если Рез.Количество()=0 Тогда
        Сообщить("Не указан ШК: ("+_номенклатура.Код+") "+_номенклатура.Наименование,СтатусСообщения.Важное);
    Иначе
        Возврат СокрЛП(Рез[0].Штрихкод);
    КонецЕсли;

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

// Обработка заполнения контента в формате приказа ММВ-7-15/820@.
//
// Параметры:
//  СсылкаНаДокумент - ЛюбаяСсылка     - ссылка на документ информационной базы;
//  Протоконтент     - Структура     - http://1c-pro-docs.diadoc.ru/ru/latest/objects/Utd820SellerContent.html
//
Процедура _ОбработатьДляАгавы(СсылкаНаДокумент, Протоконтент)
            
    _СвойствоGLN = УправлениеСвойствами.НаборСвойствПоИмени("GLN");
    GLN = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаДокумент,_СвойствоGLN);
    Сообщить(""+СсылкаНаДокумент+" GLN:"+GLN);
    
    УПД_ДобавитьИнфПолФХЖ1(Протоконтент, "грузополучатель", Строка(GLN));    
            
    КоллекцияСтрок = Протоконтент.Table.Items;
        
    Для Каждого Элемент Из КоллекцияСтрок Цикл
        
        Номенклатура     = Справочники.Номенклатура.НайтиПоКоду(Элемент.ItemVendorCode);
        
        ШХ = _ПолучитьШтрихКод(Номенклатура);
        Если НЕ ЗначениеЗаполнено(ШХ) Тогда
            Сообщить("("+Номенклатура.Код+") " + Номенклатура.Наименование + " - не указан ШХ!", СтатусСообщения.Важное);
        КонецЕсли;
        
        Если ЗначениеЗаполнено(ШХ) Тогда
            ОсновнойМодуль.ДобавитьИнформационноеПоле(Элемент, "штрихкод", ШХ);  
        КонецЕсли;        
        
    КонецЦикла;

КонецПроцедуры
//--<

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


// Обработчики событий подключаемого модуля

Функция ПодготовитьЭлектронныйДокумент(Параметры)

    // Имя шаблона: Произвольное изменение контента УПД
    Если ТипЗнч(Параметры) = Тип("Структура") И Параметры.Свойство("Результат_ИМ") Тогда
                
        Content        = Параметры.Результат.Content;
        Документ1С     = Параметры.Результат.Документ1С;

        ВидДокументаРазвернутый = Параметры.ВидДокументаРазвернутый;
        
        ТипКонтента_XDTO = ВидДокументаРазвернутый.ТипКонтента;
        
        //Сообщить(ВРЕГ(ТипКонтента_XDTO));
        Если ВРЕГ(ТипКонтента_XDTO) = ВРЕГ("Utd970SellerContent") Тогда//Utd820SellerContent
            
            _ОбработатьДляАгавы(Документ1С, Content);

        КонецЕсли;

        //Возврат Истина;

    КонецЕсли;

КонецФункции
2 Волшебник
 
28.04.25
14:03
3 mikecool
 
28.04.25
14:20
(0) ты хвастаешься или жалуешься?
4 rozer76
 
28.04.25
15:41
ха, действительно - инфостарт удалил все публикации, связанные с диадоком, например мою "Диадок. Отправка ТОРГ-2 из документа Акт о расхождениях после приемки для КА 2.5 " https://infostart.ru/1c/tools/1984009/
Они еще предлагали ее продавать на 1с-store ибо ТОРГ2 штатный 1с-модуль не формирует. Пойду разбираться с поддержкой
5 АгентБезопасной Нацио
 
28.04.25
15:44
(4) И отправки в СБИС тоже поудаляли, с той же формулировкой.   Чего и следовало ожидать. Так что вряд ли что-то получится...
6 rozer76
 
28.04.25
15:46
видать контур надавил на них, жадность ...
7 rozer76
 
28.04.25
16:02
+(4) ответ инфостарта:

Добрый день! Мы как партнер фирмы "1С" не имеем права на своей площадке размещать разработки для автоматизации работы с сервисами, входящими в список конкурирующего ПО. Разработки Тензора и Контура включены в такой список, поэтому мы не можем размещать вашу публикацию у нас на площадке.
8 probably
 
28.04.25
16:04
(2) я могу ошибаться, но когда я полез подключать эти их полезные плагины, оказалось, что плагины платные (отдельно от ежегодной оплаты интеграции Диадок-1с). Вряд ли что с тех пор изменилось
9 d4rkmesa
 
28.04.25
16:46
(0) Спасибо. Как раз недавно нужно было, единицы в кг пересчитывать в штуки. Правда, я послал бухов в сторону необходимости перехода на учет поштучно. С другой стороны, Геня Осипов с подобной задачей за пару часов справился, так что вай нот. Но документация по этим подключаемым модулям удручает немного.
10 Bigbro
 
28.04.25
19:08
свинство.
диадок свои косяки исправляет крайне неспеша
еще и другим запрещает своими доработками делиться.
нехорошо..
11 Ёпрст
 
гуру
28.04.25
21:30
(0) а в вашей конфиге, регистр ШтрихКоды не привязан к единице измерения, помимо номенклатуры ?.. явно косяк в коде
12 Лодырь
 
29.04.25
05:48
(10) Ну если я верно понимаю, запрещает не Диадок, а 1С.
13 rozer76
 
29.04.25
06:53
(12) верно, я тоже сначала подумал что наоборот...
14 АгентБезопасной Нацио
 
29.04.25
11:05
(10) Это 1с хочет, чтоб ЭДО был только через их сервис. поэтому пытается забороть Контура и Тензора неконкурентным путем.
15 laeg
 
30.04.25
16:40
(14) А почему вдруг "неконкурентный" ?
Может для продвижения контура надо рекламу на сайте 1с разместить ? зачем мелочиться

К Сведению, контур абсолютно не гнушается использовать функциональность типовых конфигураций (процедуры и функции) для работы диадок. Что есть уже не хорошо.