Имя: Пароль:
1C
 
Я опять про Контур для 970 формата
0 Мисти
 
31.03.25
14:26
Изменились все внутренности - названия! В прошлый раз обновление встало, я нашла, куда вставить свои куски, но для 820 формата, меня никто не надоумил, что всё придумано ради 970. А про 970 - я даже упоминаний не могу найти! Хотя версия Диадока новая.
98 Злопчинский
 
02.04.25
01:20
(97) в версии 5.03, табл 5.15 ДопСведТов не вижу атрибута НаимЕдИзм.
https://normativ.kontur.ru/document?moduleId=1&documentId=486791#h6112
.

ээээ!
это именно для Контур.Диадок?
.
потому как я впихнул простую заглушку
<ИнфПолФХЖ2 Идентиф="штрихкод" Значен="1234567890123" />
указанное проглатывает (это понятно), но все равно ругается (это непонятно).
Такое ощущение что ИнфПолФХЖ2 должен быть с каким-то вполне определенным Идентиф, специфическим для обмена через Контур.Диадок.
Или какая-то наведенная ошибка.
99 Злопчинский
 
02.04.25
01:38
Может у кого есть живой реальный xml из ЛК контур.диадок с импортными товарами/гтд - киньте в личку на посмотреть на e.meil@mail.ru
Спасибо
100 Злопчинский
 
02.04.25
01:22
товары на которых тренируюсь - немарикируемые, непрослеживаемые.
101 Злопчинский
 
02.04.25
01:50
(97) вот если выкинуть тег ДопСведТов - то прокатывает.
но так не полчится, потому что для импортных товаров надо указывать в этом теге инфу для КрНаимСтрПр - наименование страны происхождения товара, да и необязательный КодТов, например, может пригодиться
102 Злопчинский
 
02.04.25
01:51
кто шарит в формате - может поправят меня, растолкуют... что не так...
103 Злопчинский
 
02.04.25
02:30
так. клюшечники не сдаются, клюшечники мстят!
.
На данном этапе отладки ситуация поправилась когда
узел <ДопСведТов> положил сразу после открытия тега <СведТов>
но здесь https://normativ.kontur.ru/document?moduleId=1&documentId=486791#h6112
про обязательный порядок тегов/узлов ничегошеньки нет (не нашел/не увидел).
.
Хорошо бы заиметь XSD для формата 5.03
а то придется лезть искать где-то на сайте налоговой
.
когда сам пилил когда-то выгрузку - в конце обязательно ставил проверку по XSD? а тут в адской самописной конфе плбющит и таращит меня страшно.
.
Извиняюсь за беспокойство.
104 Злопчинский
 
02.04.25
02:33
полезное по мелочи https://buh.ru/news/fns-obyasnila-kak-izmenilsya-elektronnyy-format-scheta-faktury-i-upd.html
по письму письмо ФНС от 26.03.2025 № ЕА-4-26/3241@.
Оригинал: https://v8.1c.ru/lawmonitor/852234dc-0ae1-11f0-8ce1-005056bea45e.htm
105 Злопчинский
 
02.04.25
02:35
это только наша любимая прога/сопровожденцы могут уведомить что xsd изменилась , но ссылку на XSD не дать...
https://v8.1c.ru/lawmonitor/852234dc-0ae1-11f0-8ce1-005056bea45e.htm
106 Злопчинский
 
02.04.25
02:40
(103) попытки положить ДопСведТов в другое место внутри узла СведТов - приводят к тому, что валидатор Контур.Диадок - ругается...
.
xsd на 5.03 пока не нашел
и чем определяется/как понять порядок тегов/узлов - непонятно...
107 Злопчинский
 
02.04.25
03:24
судя по всему последние XSD для 5.03 здесь https://www.nalog.gov.ru/rn77/about_fts/docs/15556529/
108 Злопчинский
 
02.04.25
03:45
узел СвДТ тоже требуется класть во вполне определенное место в узле СведТов.
как это понять по XSD - хз. Может кто подскажет?
ориентироватьяс что если в XSD определение тега/узла лежит за определением какого-то другого тега/узла - так и надо класть при формировании XML?
109 Злопчинский
 
02.04.25
03:54
далее:
порядок узлов (по крайней мере тех, которые "интересны" мне) чтобы валидатор пропускал должен быть таким
СведТов
  СвДТ
  ДопСведТов

такой порядок соответствует порядку следования этих узлов в XSD в (107)
110 Злопчинский
 
02.04.25
03:58
ну и что самое обидное
в человекочитаемом описании Таблица 5.12
https://normativ.kontur.ru/document?moduleId=1&documentId=486791#h6112
порядок узлов соответствует XSD
но бляха муха совсем не очевидно что последовательность должна быть именно такой.
И вся трабла, что майстрячить пришлось на основе какой-то до этого работавшей выгрузки, а новые и измененные узлы совсем неочевидно было мне что надо класть строго (хотя я об этом знаю, что такие требования есть, но блин они же ИМХО должны описываться как-то явно, а не только просто раположением узлов в документации и слеованием описаний ы XSD
111 Злопчинский
 
02.04.25
04:00
Самое обидное-2: я обычно пишу свой код.
и скольо выгрузок писал - писал по человекочитаемой документации, встретилось описание узла/тега - вбвбвхиваю его. Поэтому не было проблем с порядком следования.
А тут адская самлписная конфига не имеющая ничего общего ни с однйо типовой, тяжелый грязный код. охерительнеы архитектурые решения просто упасть итд. Решил взять за основу что было ибо хз что там "у нее унутре".
на тебе абвгдэйку!!!
112 Злопчинский
 
02.04.25
04:01
Короче.
Пойду застрелюсь.
113 vladmenleo
 
02.04.25
05:18
(106) плохо ищешь https://formats.saby.ru/edo/standart/117134?version=141251
там и описание и хсд и пример
114 Sneer
 
02.04.25
08:04
					ЗаписьXML.ЗаписатьНачалоЭлемента("СведТов");
						ЗаписьXML.ЗаписатьАтрибут("КолТов", Формат(Стр.Количество, "ЧЦ=15; ЧДЦ=3; ЧРД=.; ЧГ=0"));
						ЗаписьXML.ЗаписатьАтрибут("СтТовУчНал", Формат(Стр.Сумма, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧГ=0"));
						Если Стр.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
	       					ЗаписьXML.ЗаписатьАтрибут("НалСт", "без НДС");
       					Иначе
							ЗаписьXML.ЗаписатьАтрибут("НалСт", Строка(Стр.СтавкаНДС));
       					КонецЕсли;
						ЗаписьXML.ЗаписатьАтрибут("СтТовБезНДС", Формат(Стр.Сумма - Стр.СуммаНДС, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧГ=0"));
						ЗаписьXML.ЗаписатьАтрибут("ЦенаТов", Формат((Стр.Сумма - Стр.СуммаНДС) / Стр.Количество, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧГ=0"));
						ЗаписьXML.ЗаписатьАтрибут("ОКЕИ_Тов", Стр.Номенклатура.ЕдиницаИзмерения.Код);
						ЗаписьXML.ЗаписатьАтрибут("НаимЕдИзм", Стр.Номенклатура.ЕдиницаИзмерения.Наименование);
						ЗаписьXML.ЗаписатьАтрибут("НаимТов", ?(ПустаяСтрока(Стр.Содержание), ?(ПустаяСтрока(Стр.Номенклатура.НаименованиеПолное), Стр.Номенклатура.Наименование, Стр.Номенклатура.НаименованиеПолное), Стр.Содержание));
						ЗаписьXML.ЗаписатьАтрибут("НомСтр", Формат(Ном, "ЧЦ=15; ЧДЦ=0; ЧГ=0"));

						Если Не Стр.НомерГТД.Пустая() Тогда
							ЗаписьXML.ЗаписатьНачалоЭлемента("СвДТ");
								ЗаписьXML.ЗаписатьАтрибут("НомерДТ", СокрЛП(Стр.НомерГТД.Код));
								ЗаписьXML.ЗаписатьАтрибут("КодПроисх", Стр.СтранаПроисхождения.Код);
							ЗаписьXML.ЗаписатьКонецЭлемента();
						КонецЕсли;

						ЗаписьXML.ЗаписатьНачалоЭлемента("ДопСведТов");
							ЗаписьXML.ЗаписатьАтрибут("КодТов", Стр.Номенклатура.Код);
							ЗаписьXML.ЗаписатьАтрибут("ПрТовРаб", ?(Стр.Номенклатура.Услуга, "3", "1"));
							Если Не Стр.СтранаПроисхождения.Пустая() Тогда
								ЗаписьXML.ЗаписатьНачалоЭлемента("КрНаимСтрПр");
								ЗаписьXML.ЗаписатьТекст(Стр.СтранаПроисхождения.Наименование);
								ЗаписьXML.ЗаписатьКонецЭлемента();
							КонецЕсли;
						ЗаписьXML.ЗаписатьКонецЭлемента();

						ЗаписьXML.ЗаписатьНачалоЭлемента("Акциз");
							ЗаписьXML.ЗаписатьНачалоЭлемента("БезАкциз");
								ЗаписьXML.ЗаписатьТекст("без акциза");
							ЗаписьXML.ЗаписатьКонецЭлемента();
						ЗаписьXML.ЗаписатьКонецЭлемента();
						
						ЗаписьXML.ЗаписатьНачалоЭлемента("СумНал");
							Если Стр.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
								ЗаписьXML.ЗаписатьНачалоЭлемента("БезНДС");
									ЗаписьXML.ЗаписатьТекст("без НДС");
								ЗаписьXML.ЗаписатьКонецЭлемента();
							Иначе
								ЗаписьXML.ЗаписатьНачалоЭлемента("СумНал");
									ЗаписьXML.ЗаписатьТекст(Формат(Стр.СуммаНДС, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧН=0; ЧГ=0"));
								ЗаписьXML.ЗаписатьКонецЭлемента();
							КонецЕсли;
						ЗаписьXML.ЗаписатьКонецЭлемента();
						
						Если Не НеВыгружатьИД Тогда
							ЗаписьXML.ЗаписатьНачалоЭлемента("ИнфПолФХЖ2");
								ЗаписьXML.ЗаписатьАтрибут("Значен", Строка(Стр.Номенклатура.УникальныйИдентификатор()));
								ЗаписьXML.ЗаписатьАтрибут("Идентиф", "ИД");
							ЗаписьXML.ЗаписатьКонецЭлемента();
						КонецЕсли;
					ЗаписьXML.ЗаписатьКонецЭлемента();



(108) вот так проходит контроль
115 Злопчинский
 
02.04.25
09:39
(113) ага, удобно.
спсб.
справился уже
116 Клетчатый
 
02.04.25
11:14
Прошу помощи. С XDTO не работал, поэтому в модулях Диадок - плаваю. Вчера разобрался и получил Контент в Событии ПодготовитьЭлектронныйДокумент, сейчас не могу добавить "Дополнительные сведения" в контент.AdditionalInfoId.StructedAdditionalInfos

очень нужна помощь
117 lucky_
 
02.04.25
11:16
(116) заплатить Контуру не предлагать?
118 Andy13
 
02.04.25
11:23
И не разбирайся. Есть простой путь. Посмотри в (69), там есть такая строчка:
СтруктураКонтента    = ОсновнойМодуль.ОбъектXDTOВСтруктуру(НовыйКонтент(ТипКонтента_XDTO), Истина);
Подставь вместо "НовыйКонтент(ТипКонтента_XDTO)" свой полученный контент. Получишь контент в виде структуры. Ну  и там всё просто добавляется/изменяется/удаляется.
Потом с помощью ОсновнойМодуль.ЗаполнитьКонтентXDTOПоСтруктуре(Результат.Content, СтруктураКонтента); преобразуешь обратно в XML.
119 Andy13
 
02.04.25
11:25
(117) Это зло даже не предлагать! Я пытался.
120 rozer76
 
02.04.25
11:27
(116) например штрихкод, вот огрызок в ПодклМодуле (ПМ)

Протоконтент= ОсновнойМодуль.ТиповойМодуль_ПолучитьКонтент(ТиповойМодуль, РежимУправляемыхФорм, Документ1С, ТипКонтента_XDTO, ДополнительныеПараметры);

Таблица = Протоконтент.InvoiceCorrectionTable.Items;
                Для каждого СтрокаТЧ Из Таблица Цикл  
                    ДополнитьМассивKeyValue(СтрокаТЧ.StructedAdditionalInfos
                        , "штрихкод"
                        , СвояФункцияПолучитьШКТовараПоПартнеру(СтрокаТЧ.СлужебнаяИнформация.Номенклатура, ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаДокумент.Контрагент,"Партнер")));
КонецЦикла;

Процедура ДополнитьМассивKeyValue(Массив, Key, Value)
    НовыйЭлемент = Новый Структура;
    НовыйЭлемент.Вставить("Key",    Key);
    НовыйЭлемент.Вставить("Value",    Value);
    Массив.Добавить(НовыйЭлемент);
КонецПроцедуры
121 Клетчатый
 
02.04.25
11:26
Андрей, я не уверен что мне нужен XML, там задача подменить в созданном документе "кое что", с этим справился, а вот как добавить Дополнительные сведения - глухо.
122 Andy13
 
02.04.25
11:29
Дополнительные сведения сидят в контенте. Пустые. Надо их найти и заполнить.
123 Клетчатый
 
02.04.25
11:29
Вот как раз с помощью ДополнитьМассивKeyValue не могу добавить         ДополнитьМассивKeyValue(Протоконтент.AdditionalInfoId.StructedAdditionalInfos, "Договор", ДопСведения);
124 АгентБезопасной Нацио
 
02.04.25
11:31
(116) ну вот и повод начать работать с XDTO.

Например, добавить функции

Функция НовыйКонтент(ИмяКонтента,СоздатьВсеСвойства=Истина)
    Возврат ОсновнойМодуль.ДД_Компонента_ПолучитьПустойКонтент(ИмяКонтента,СоздатьВсеСвойства);
КонецФункции

Функция НовыйЭлементСпискаXDTO(СписокXDTO,СоздатьВсеСвойства=Истина)
    НовыйКонтент = НовыйКонтент(СписокXDTO.ВладеющееСвойство.Тип.Имя,СоздатьВсеСвойства);
    Возврат СписокXDTO.Добавить(НовыйКонтент);
КонецФункции

Функция НовыйЭлементСпискаXDTOСоЗначением(СписокXDTO,ЗначениеЭлемента)
    НовыйКонтент = НовыйКонтент(СписокXDTO.ВладеющееСвойство.Тип.Имя,Ложь);
    Возврат СписокXDTO.Добавить(ЗначениеЭлемента);
КонецФункции

Процедура ДобавитьВКонтент(ЭлементСписка,СтруктураДанных)
    НовыйЭлементСписка = НовыйЭлементСпискаXDTO(ЭлементСписка);
    ЗаполнитьЗначенияСвойств(НовыйЭлементСписка,СтруктураДанных);
КонецПроцедуры

И в ПодготовитьЭлектронныйДокумент что-то вроде
//ДобавитьВКонтент(Элемент.StructedAdditionalInfos,Новый Структура("key,value","ЧЗ_ОСУ",РегВырЧЗОСУ));
125 Клетчатый
 
02.04.25
11:31
по причине:
Несоответствие типов XDTO:
Тип '{http://diadoc.kontur.ru/dll_types}AdditionalInfoItem' не найден
126 АгентБезопасной Нацио
 
02.04.25
11:33
(118) тоже вариант!©
127 АгентБезопасной Нацио
 
02.04.25
11:36
(125) научись для начала правильно задавать вопросы....
Типа "пытаюсь получить *, делаю**, получаю ***", и указывать в постах номер сообщения, на которое отвечаешь.  а то, например, (125) относится хп к чему...
128 Клетчатый
 
02.04.25
11:46
(125) относится к (123) в рамках ответа на (120).

(124) Спасибо большое - очень помогли.
129 АгентБезопасной Нацио
 
02.04.25
12:00
(76) ага, спасибо, понял. Т.е., если я правильно понял, ЧЗ теперь сам опирается на признак товара переменного веса в НК, и берет для товара переменного значение из Количества...
130 Djelf
 
гуру
02.04.25
12:09
(23) Откат от Контура получателю это обычное дело.
Но не получается у них нормализовать откат через роуминг провайдеров.
Поэтому такие требования.
Можно "забить" на эти требования Контура, УПД все равно проходить будут.
131 Bigbro
 
02.04.25
14:13
за 5 дней уже 3 версии Диадок выпустили.
продолжают исправлять контент по 970
132 АгентБезопасной Нацио
 
02.04.25
14:31
(131) хм. а что такого исправили? у меня вроде валидацию проходит, ЧЗ проходит, контра не жалуется (точнее, жаловалась, но это мои косяки были)
133 Andy13
 
02.04.25
14:55
(132) Ну например косяк был формировании СФ на аванс для УПП.
134 АгентБезопасной Нацио
 
02.04.25
15:01
(133) Понятно. У меня ограниченные задачи и КА/УТ, видимо, меня не зацепило...
135 Bigbro
 
02.04.25
15:16
(132) проверки на ноль, с заменами на единицы у количества, там был новый приказ с другим правилом теперь в некоторых случаях можно ставить ноль, когда раньше он на единицу заменялся.
по адресам много изменений с проверками и раскрутками по форматам классификаторов.
ну и еще какие то детали возможно исправление старых ошибок.
подозреваю что это не последнее, потому что сейчас начнутся корректировки 970 форматом старых документов оформленных в 820 формате и там сто процентов будут накладки.
136 АгентБезопасной Нацио
 
02.04.25
15:40
(135) кстати, а УКД? я не нашел упоминаний об их изменении... Поэтому все отправляем по-старому, 736, с "регулярным выражением", и пока проходит...
137 rozer76
 
02.04.25
21:50
(136) УКД это позже..немного
138 Мисти
 
02.04.25
22:20
А мне показалось, что тему закрыли! А она вот!
Я всё еще в процессе. Вопрос такой - при запуске обработки Диадок - она, видимо, "компилируется" - т.е. преобразует макеты в обработки и куда-то их сохраняет, чтобы потом запускать. Так? У меня явно эти "скомпилированные" обработки где-то зависли, потому что я отменила всякую отладочную печать, а она продолжает печататься! Как заставить ее заново выгрузить из себя все обработки из макетов?
139 Мисти
 
02.04.25
22:29
(124) очень нужен совет по xdto, куда можно написать?
140 Ёпрст
 
гуру
02.04.25
22:40
(138) выгрузить - галка режим отладки. Загрузить - ручонками в нужный макет
141 Мисти
 
03.04.25
01:09
(140) нет, моя проблема не в этом. При вызове программы продолжает работать то, что было в эти макеты вставлено вчера! Сегодня там уже другое! Но по отладочной печати я вижу, что работают старые модули.
142 Bigbro
 
03.04.25
05:24
(141) если галка режим отладки стоит то запускаются выгруженные на диск модули, даже если в обработку уже загрузили другие.
или отладку убирайте или выгружайте повторно.
ну или вы не ту версию запускаете, бывает путаница когда обработок много
143 Ёпрст
 
гуру
03.04.25
06:47
(141) переоткрой предприятие
144 АгентБезопасной Нацио
 
03.04.25
08:53
(139) дык сюда и пиши.
(138) ничо нигде не "компилируется". При работе либо создаются внешние обработки из макетов (если режим отладки не включен), либо используются уже выгруженные для отладки в /libs и /include каталога запуска обработки(если отладка включена). И нехрен там исправлять, вам однозначно хватит ПМа
145 Мисти
 
03.04.25
18:50
Основание передачи (сдачи) / получения (приемки) - как у них это поле называется?
146 АгентБезопасной Нацио
 
03.04.25
19:01
(145) а что мешает поискать в ссылке из (6)? что?
Накрайняк, поискать в приказе фнс, и потом найти в (6) по имени тега  https://developer.kontur.ru/Docs/Diadoc_UM/objects/970%40/TransferInfo970.html ? Ошибка в ДНК?
147 Мисти
 
03.04.25
19:16
Спасибо! Знать бы где искать!
148 Мисти
 
03.04.25
19:17
обидно, что они там по ходу дела ДокументУчета теряют, как раньше было удобно! И их структура перед глазами и мой начальный документ, из которого удобно взять всё, что нужно.
149 АгентБезопасной Нацио
 
03.04.25
19:31
(148) ничего они не теряют. см (43). бери - не хочу. Хоть вообще всё.
150 АгентБезопасной Нацио
 
03.04.25
19:35
(147)
Программист сидит в баре и пьет пиво. Подходит к нему девица и, заигрывая, спрашивает:
- Молодой человек, а сколько сейчас времени, хи-хи, не подскажете?
Программист берет ее за руку, показывает на часы на ее руке и с ненавистью в голосе говорит:
- ВОТ ЗДЕСЬ... ВСЕ.... НАПИСАНО!!!
©
В документации искать, где же еще. Я еще бы понимал, если б ссылки на доку не были в первом десятке ответов...
151 Мисти
 
03.04.25
19:38
Где я и где первый десяток?? ))
152 АгентБезопасной Нацио
 
03.04.25
19:39
(151) в восьмом и девятом ответах...
153 Мисти
 
03.04.25
19:42
Ладно, согласна, пусть ПМ. "Сгенерировать Шаблон" - получила текст. Куда его??
154 Мисти
 
03.04.25
19:56
Не удалось подключить ПМ (путь к ПМ = Кос_ПМ_Диадок; расположение = Конфигурация) по причине:
Поле объекта не обнаружено (ОсновнойМодуль)
155 Bigbro
 
03.04.25
20:07
"Цветы, дети, политика, театр, архитектура" - мне кажется лучше вам все же заняться этим.
156 Мисти
 
03.04.25
20:33
нет ни одной задачки, которую бы я не решила - мытьем или катаньем.
с ПМ не идет дело. Буду править в модулях! Подскажите, в каком модуле есть еще ссылка на первичный документ?
157 Bigbro
 
03.04.25
21:14
Берешь интеграционный модуль для 1с Молокозавод Казахстан и там смотришь блок формирование контента 970.
соответственно везде где идут вызовы этого модуля и возвращается content это оно и есть.
158 Alexor
 
03.04.25
22:51
(153) Создай пустую обработку. Или внешний файл или расширение. Этот тест скопировать в модуль обработки.
Если внешняя то подключить ее.
В Обработке Диадок указать либо в составе конфигурации либо выбрать из справочника.


Контент менять в
Функции ПодготовитьЭлектронныйДокумент()
Там шаблонами накидывает разные варианты.
Единственное, что у меня не сработало.
В шаблоне прописан Возврат Истина.
Я не особо разбирался, что возвращать должно, но не булево.
Просто сделал Что бы в Функции не было Возврат, тогда отрабатывает без ошибок.
Можно и свою таб часть пересобрать. И доп.поля прописать.
Титул, только не совсем понял, где формирует.
Но изменить можно в этой функции.
Примеры там есть.




Вызывается из Функция ОбработатьСобытие()
159 АгентБезопасной Нацио
 
04.04.25
09:15
(153) Ну ведь всё есть в документации, прямо по пунктам, а для особо тупых - даже с картинками. https://developer.kontur.ru/docs/Diadoc_UM/index.html
ссылка на документацию либо в первом десятке ссылок гугла, либо прямо при генерации шаблона ПМ.
(156) решать надо не "мытьем или катаньем", а головой. Даже по именам выгруженых для отладки модулей можно понять.
(155) политику, театр и архитектуру - вычеркивай.
160 cep207
 
04.04.25
13:12
(0) как остановите регламентные задания. 1с документооборот для целей миграций?
161 Bigbro
 
04.04.25
13:42
(160) на сервере 1с, если доступ есть.
162 a1ex4ndr
 
04.04.25
16:47
(43) ХЗ у меня при 970 формате в Параметры.Результат.Content неопределено в ПодготовитьЭлектронныйДокумент.
И в ПодготовитьПакет при 820 формате правил контент в Параметры.Пакет.Документы/{ТекущийДокумент}/СлужебнаяИнформация.Контент, а при 970 формате Контента в СлужебнойИнформации нет...
163 v36i82bp
 
04.04.25
16:52
(123) (156) Оставлю тут в качестве примера ПМ:

Перем ОсновнойМодуль Экспорт; //ВызовыПМ.epf

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

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

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

        Документ1С = Параметры.Результат.Документ1С; //Ссылка
        мКонтент = Параметры.Результат.Content; //ОбъектXDTO
        
        мДобавитьКодНоменклатурыВНаименование = Ложь;
        мДобавитьКодНоменклатурыВДопИнфПоле = Ложь;
        мЗаменитьОснованиеНаДоговор = Ложь; //Взаиморасчеты ведутся по Заказам  
        мУказатьЗаказВДопИнфПоле = Ложь;
        
        //Обрабатываем условия при которых необходимо изменить данные
        Если ЗначениеЗаполнено(Документ1С.Контрагент) Тогда
            мДобавитьКодНоменклатурыВНаименование = Истина;
            мДобавитьКодНоменклатурыВДопИнфПоле = Истина;
            мЗаменитьОснованиеНаДоговор = Истина;
            мУказатьЗаказВДопИнфПоле = Истина;
        КонецЕсли;
        
        Если Параметры.ВидДокументаРазвернутый.ID = "ID_СчетФактура" Тогда //ID_ДОКУМЕНТА //Условие создано при генерации шаблона
        КонецЕсли;
        
        Если Параметры.ВидДокументаРазвернутый.ID = "ID_УПД" Тогда //ID_ДОКУМЕНТА //Условие создано при генерации шаблона
        КонецЕсли;
        
        Если Параметры.ВидДокументаРазвернутый.ID = "ID_АктФормализованный" Тогда //ID_ДОКУМЕНТА //Условие создано при генерации шаблона    
        КонецЕсли;
        
        Если Параметры.ВидДокументаРазвернутый.ID = "ID_ТОРГ12" Тогда //ID_ДОКУМЕНТА //Условие создано при генерации шаблона
            
            Если мДобавитьКодНоменклатурыВНаименование Или мДобавитьКодНоменклатурыВДопИнфПоле Тогда
                СтрокиТаблицы = мКонтент.Table.Items;
                Для Каждого ЭлементXDTO Из СтрокиТаблицы Цикл
                    Номенклатура = ЗначениеИзСтрокиВнутр(ЭлементXDTO.СлужебнаяИнформация.Номенклатура); //Получаем ссылку из строки
                    КодНоменклатуры = Номенклатура.Код;
                    Если ЗначениеЗаполнено(КодНоменклатуры) Тогда
                        Если мДобавитьКодНоменклатурыВДопИнфПоле Тогда
                            // Выводим информацию в раздел "Доп. сведения" табличной части
                            ОсновнойМодуль.ДобавитьИнформационноеПоле(ЭлементXDTO, "Код", СокрЛП(КодНоменклатуры));
                        КонецЕсли;
                        Если мДобавитьКодНоменклатурыВНаименование Тогда
                            // Выводим информацию в раздел "Наименование товара" табличной части
                            ЭлементXDTO.Product = ЭлементXDTO.Product + ", " + СокрЛП(КодНоменклатуры)
                        КонецЕсли;
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли; // Добавить Код
            
            Если мЗаменитьОснованиеНаДоговор И ЗначениеЗаполнено(Документ1С.ДоговорКонтрагента) Тогда
                Если Параметры.ВидДокументаРазвернутый.ТипКонтента = "Utd820SellerContent" Тогда //ММВ-7-15/820@
                    Если мКонтент.TransferInfo.TransferBases.Количество() = 0 Тогда //СписокXDTO
                        // Добавляем элемент в СписокXDTO
                        мОснование = ОсновнойМодуль.НовыйЭлементСпискаXDTO(мКонтент.TransferInfo.TransferBases);
                        ОсновнойМодуль.УстановитьЗначениеXDTO(мОснование, "DocumentName", "Договор");
                        ОсновнойМодуль.УстановитьЗначениеXDTO(мОснование, "DocumentNumber", Документ1С.ДоговорКонтрагента.Номер);
                        ОсновнойМодуль.УстановитьЗначениеXDTO(мОснование, "DocumentDate", Документ1С.ДоговорКонтрагента.Дата);
                    Иначе
                        мОснование = мКонтент.TransferInfo.TransferBases[0];
                        Если мУказатьЗаказВДопИнфПоле И мОснование.DocumentName = "Заказ покупателя" И ЗначениеЗаполнено(мОснование.DocumentNumber) И ЗначениеЗаполнено(мОснование.DocumentDate) Тогда
                            // Выводим информацию в раздел "Доп. сведения" шапки документа
                            ОсновнойМодуль.ДобавитьИнформационноеПоле(мКонтент.AdditionalInfoId, мОснование.DocumentName, "№ " + мОснование.DocumentNumber + " от " + Формат(мОснование.DocumentDate, "ДФ=dd.MM.yyyy"));
                        КонецЕсли;
                        мОснование.DocumentName = "Договор";
                        мОснование.DocumentNumber = Документ1С.ДоговорКонтрагента.Номер;
                        мОснование.DocumentDate = Документ1С.ДоговорКонтрагента.Дата;
                    КонецЕсли;    
                КонецЕсли; // 820
                
                Если Параметры.ВидДокументаРазвернутый.ТипКонтента = "Utd970SellerContent" Тогда //ЕД-7-26/970@
                    Если мКонтент.TransferInfo.TransferBases.Количество() = 0 Тогда //СписокXDTO
                        // Добавляем элемент в СписокXDTO
                        мОснование = ОсновнойМодуль.НовыйЭлементСпискаXDTO(мКонтент.TransferInfo.TransferBases);
                        ОсновнойМодуль.УстановитьЗначениеXDTO(мОснование, "Name", "Договор");
                        ОсновнойМодуль.УстановитьЗначениеXDTO(мОснование, "Number", Документ1С.ДоговорКонтрагента.Номер);
                        ОсновнойМодуль.УстановитьЗначениеXDTO(мОснование, "Date", Документ1С.ДоговорКонтрагента.Дата);
                    Иначе
                        мОснование = мКонтент.TransferInfo.TransferBases[0];
                        Если мУказатьЗаказВДопИнфПоле И мОснование.Name = "Заказ покупателя" И ЗначениеЗаполнено(мОснование.Number) И ЗначениеЗаполнено(мОснование.Date) Тогда
                            // Выводим информацию в раздел "Доп. сведения" шапки документа
                            ОсновнойМодуль.ДобавитьИнформационноеПоле(мКонтент.AdditionalInfoId, мОснование.Name, "№ " + мОснование.Number + " от " + Формат(мОснование.Date, "ДФ=dd.MM.yyyy"));
                        КонецЕсли;
                        мОснование.Name = "Договор";
                        мОснование.Number = Документ1С.ДоговорКонтрагента.Номер;
                        мОснование.Date = Документ1С.ДоговорКонтрагента.Дата;
                    КонецЕсли;
                КонецЕсли; // 970
                
            КонецЕсли; // Заменить Основание на Договор
            
        КонецЕсли; // "ID_ТОРГ12"    
        
    КонецЕсли; //Обработка готового результата
    
    Возврат Истина;
    
КонецФункции

///////////////////////////////////////////////////

Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид",                 "ДополнительнаяОбработка");
    ПараметрыРегистрации.Вставить("Наименование",         "Диадок (СКБ Контур): Подключаемый модуль");
    ПараметрыРегистрации.Вставить("БезопасныйРежим",     Ложь);
    ПараметрыРегистрации.Вставить("Версия",             ЭДО_ВерсияAPIПодключаемогоМодуля());
    ПараметрыРегистрации.Вставить("Информация",         "Модуль работы с электронными первичными документами через Диадок (подключаемая часть)");
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    
    ДобавитьКоманду(ТаблицаКоманд, "Выполнение регламентных операций подключаемого модуля Диадок", "ВыполнитьРегламентныеДействияПМ", "ВызовСерверногоМетода");
    
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    
    Возврат ПараметрыРегистрации;
    
КонецФункции

Функция ПолучитьТаблицуКоманд()
    
    Команды = Новый ТаблицаЗначений;
    
    Команды.Колонки.Добавить("Представление",             Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Идентификатор",             Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Использование",             Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("ПоказыватьОповещение",     Новый ОписаниеТипов("Булево"));
    Команды.Колонки.Добавить("Модификатор",             Новый ОписаниеТипов("Строка"));
    
    Возврат Команды;
    
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    
    НоваяКоманда                        = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление            = Представление;
    НоваяКоманда.Идентификатор            = Идентификатор;
    НоваяКоманда.Использование            = Использование;
    НоваяКоманда.ПоказыватьОповещение    = ПоказыватьОповещение;
    НоваяКоманда.Модификатор            = Модификатор;
    
КонецПроцедуры

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды = Неопределено) Экспорт
    
    Если ИдентификаторКоманды = "ВыполнитьРегламентныеДействияПМ" Тогда
        ВыполнитьРегламентныеДействияПМ(ПараметрыВыполненияКоманды);
    КонецЕсли;
    
КонецПроцедуры

Процедура ВыполнитьРегламентныеДействияПМ(Параметры)
    // Регламентные действия, НЕ требующие инициализации основного модуля
КонецПроцедуры

Функция ЭДО_ВерсияAPIПодключаемогоМодуля() Экспорт
    
    Возврат 4;
    
КонецФункции
164 alexandr1
 
04.04.25
16:53
(154) Нужно поставить экспорт на переменную, еще можно на ядро добавить. Не знаю почему изначально так не делают.
На ут10.3 еще не работает если в ядре при подключении ПМ не указать ссылку на ядро(на само себя).
Чудеса одни
165 alexandr1
 
04.04.25
16:58
Обновил обработку, а все равно маркировку по осу ставит все в номупак, а не в ГТИН и КолВедМарк.
166 Злопчинский
 
04.04.25
17:01
Что-то как-то очень долго все в 8-ке проблемы решаются...
Понятно, что уровень/интеграция и прочее (но это ж не в77 интеграции писать, в 77 у двух клиентов тупую выгрузку подокументно и/или групповую запилил уже работают два дня как), но все равно какая-то виллариба с 8-кой получается, что так долго-то...?
.
- В Вилларибо снова беда, горят стога конопли...
- А в Виллабаджо снова праздник, ветер дует в их сторону!
167 АгентБезопасной Нацио
 
04.04.25
17:59
(162) так а формат отправки-то переключил?
168 АгентБезопасной Нацио
 
04.04.25
18:03
(166) Ну, во-первых, в типовых сам вендор, судя по всему, накосячил. В контуре - простейшие случаи, типа моего (обычная торговля, большинство товаров с ОСУ, меньше немаркеров и поэкземплярного), сетей с их дополнительными ФХЖ мало - допилено по сути за день, да и то часть косяков по  моей криворукости, и часть по невнимательности
169 Злопчинский
 
04.04.25
18:48
(168) я рад за тебя. ;-)
170 Bigbro
 
04.04.25
18:55
4.50.2 придется ставить
много ошибок исправлено. (
171 Мисти
 
05.04.25
19:55
Как работать с отладчиком Контура? Он мне всё выгрузил, я вижу нужные мне куски, вставила туда свое, просто сохранила, не возвращала обратно в макеты... Запустила заново Диадок - вижу, что он моих вставок не видит!
172 Мисти
 
05.04.25
20:06
(170) а мне прислали 4.50.18
173 Bigbro
 
05.04.25
20:37
174 АгентБезопасной Нацио
 
06.04.25
10:33
175 Клетчатый
 
07.04.25
08:37
Кто нибудь программно подменял Unit на значение Неопределено в контенте Table.Items? Проблема в том что одну и туже номенклатуру используют разные контрагенты, но одним нужно количество и цена, а другим нужны прочерки.
Простое присвоение не работает.
176 АгентБезопасной Нацио
 
07.04.25
09:36
(175) для вашей функции документа - он является обязательным?
177 Клетчатый
 
07.04.25
10:16
Нет. Заменил на стороне 1С единицу измерения на пустое значение - всё работает, а вот как если "здесь читать, здесь не читать" на будущее, если значения Unit <> Неопределено, а нужно очистить?
178 Клетчатый
 
07.04.25
11:21
(175) Получается, что в случае отсутствия единицы измерения
ОКЕИ_Тов (UNIT) и НаимЕдИзм (UnitName) - не выгружаются в СведТов (Items) и в контенте значения Неопределено.
А вот если они сначала выгрузились и уже есть в Items, получается весь контент нужно Items очистить и заново заполнить?
179 Клетчатый
 
07.04.25
11:22
(178) для (176)
180 АгентБезопасной Нацио
 
07.04.25
14:39
(178) Ну попробуй их пустыми строками заполнить...
181 Клетчатый
 
07.04.25
14:59
(180), пробовал "", Неопределено, Null.
Сейчас в 1С, очистил Единицу, для всех услуг.
Если будут требовать, буду костылить с добавлением как в (124).
182 Клетчатый
 
07.04.25
15:05
(181) Очистил для услуг у которых Единица была "-".
183 АгентБезопасной Нацио
 
07.04.25
16:15
(182) В Приказе об этом  и написано:

Таким образом, если работы или услуги можно измерить количественно — в документе указывают единицы измерения (ОКЕИ_Тов). А также заполняют количество и цену.

Если работы или услуги измерить количественно нельзя — ОКЕИ_Тов не заполняют. Значения КолТов и ЦенаТов в таком случае заполняют на усмотрение составителя документа, но при этом если вы указываете количество, цену нужно прописать обязательно.


Т.е. правильно - у услуг не заполнять, если не указано иное
184 Клетчатый
 
07.04.25
16:58
(183) Спасибо, просто на одну номенклатуру вешают кучу Контрагентов со своими, требованиями. Буду действовать от противного, если нужно добавлю, а так "прочерк".
185 АгентБезопасной Нацио
 
07.04.25
17:06
(184) Ну вот для "отдельных требований" и заполняй, по их спецификациям. А для всех нормальных - по правилам
186 Клетчатый
 
10.04.25
16:26
(185) Продолжаю копать ПМ, возникла странная ситуация.
Доработал в ПМ ID_СчетФактура,ID_ИСФ. Всё нормально.
Добрался до ID_КСФ. В отладчике в событии "ПодготовитьЭлектронныйДокумент"  не получаю Результат_ИМ,

дальше вылетает с ошибкой
Не удалось подготовить пакет (ВидПакета=ID_КСФ, ДокументУчета=Счет-фактура выданный 1111 от 31.03.2025 0:00:00) по причине:
Ошибка инициализации подключаемого модуля:
Выбранный файл не является подключаемым модулем.

КонтурЭДО последний. Видно не хочет заполнять контент по Корректировочным СФ
187 Клетчатый
 
10.04.25
16:29
(185) при отключении ПМ в настройках, всё равно ругается на ошибку инициализации ПМ
188 Ёпрст
 
гуру
10.04.25
17:49
(187) в рег сведении свойства объектов прибей это
189 Клетчатый
 
11.04.25
11:04
(188) нет такого регистра, уже и ПМ переименовал переподключил. А всё равно где то скрывается
ВнешняяОбработкаОбъект.ДиадокПодключаемыйМодульСтандарт  Имя модуля ПодключаемыйМодуль.

Если это старый, то где он хранится?
190 Клетчатый
 
11.04.25
11:08
(189) Эту фигню похоже создаёт КонтурДиадокСтандартУФ, теперь буду думать как победить.
191 Ёпрст
 
гуру
11.04.25
11:28
(189) в обычных формах диадок весь свой мусор хранит в рс.значениясвойствобъекта, где оно в уф - надо смотреть, мне лень. Там прибить и привет
192 Клетчатый
 
11.04.25
11:32
(191) БП 3 - собственно УФ. есть большое подозрение, что с переходом к 970, на 736 слегка забили. Сейчас ковыряю макет КонтурДиадокСтандартУФ.
193 АгентБезопасной Нацио
 
11.04.25
12:03
(192) запускаешь диадок в режиме отладки, и смотришь, какой он модуль пытается подключить и инициализировать. чуть выше по стеку смотришь, откуда он подключает. Еще выше - откуда он берет путь для подключения. там и чистишь.
194 Клетчатый
 
11.04.25
13:04
(193) КонтурДиадокСтандартУФ пытается инициализировать ПМ предварительно присвоив ему имя ДиадокПодключаемыйМодульСтандарт причём в случае КСФ по алгоритму Стандарт 736, а модуль можно подключить только 1, возможно буду подменять ПМ на старый вариант 820.
195 Клетчатый
 
11.04.25
15:05
(192) Тех поддержка подсказала где почистить мусор, для БП 3 это РС Дополнительные сведения. Там в свойстве DDPro_ИмяИнтеграционногоМодуля завис старый интеграционный модуль ПМ_БП_30, почистил - дальше дело пошло.
196 rozer76
 
14.04.25
21:03
(173) это нормально, "контуровцы" могут прислать по запросу версию для тестов, сейчас это 4.50.29 хотя официальная 4.50.2.
Ошибка? Это не ошибка, это системная функция.