Имя: Пароль:
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
 
naïve
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.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс