Предупреждение при синхронизации, но с документом все ОК

1. Vida 15 17.04.19 12:39 Сейчас в теме
Обмен заканчивается без предупреждений в окне "Предупреждения при синхронизации данных"

но если заглянуть в журнал регистрации то там их много.

Проверила эти документы: все с ними хорошо, и проведены (хотя в предупреждении пишет что не удалось провести). И док-основание проведен и все (кажется) норм заполнено там.

Текст такой:

Не удалось провести документ Счет-фактура полученный 2080-001025 от 29.03.2019 15:38:44, полученный из другой информационной базы. По причине Некорректно заполнена колонка "Документ-основание" в строке 1 списка "Документы-основания счета-фактуры".
Документ не проведен. Счет-фактуру можно провести только на основании проведенного документа..
Возможно не заполнены все реквизиты, обязательные к заполнению.


Синхронизация УНФ - БП.
УНФ старая правила очень переписанные.
Эти предупреждения (странные) посыпались после последнего обновления и как бы с данными все хорошо (вроде бы) но ведь непорядок...

Наведите на мысль: с чего такое может вдруг быть? Где искать баг?
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
12. tusv 211 18.04.19 09:58 Сейчас в теме +0.24 $m
(8) Запросом. С сортировкой по моменту времени
ВЫБРАТЬ 
	&РТУ КАК Документ,
	ВЫРАЗИТЬ(&РТУ КАК Документ.РеализацияТоваровУслуг).МоментВремени КАК МоментВремени

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	&СчетФактура,
	ВЫРАЗИТЬ(&СчетФактура КАК Документ.СчетФактураВыданный).МоментВремени

УПОРЯДОЧИТЬ ПО
	МоментВремени УБЫВ
Показать

Увы Счет фактура раньше при одинаковом времени.
Варианты
1. Самое простое.В ПКО прибавлять секунду, если Даты равны и поиск только по УИДу. Использовать обязательно функцию Мин(Источник.ДокументОснование.Дата+1 , КонецДня(Источник.ДокументОснование.Дата))
2.Вариант муторный. Определить свой порядок проведения. В ПКО добавить Параметр Порядок, В глобальный обработчик "После загрузки объекта" добавлять Объект в таблицу значений и проводить в После загрузки данных
Пример
Если ИмяТипаОбъекта = "Документ" и не ПараметрыОбъекта = Неопределено и не ПараметрыОбъекта["Порядок"] = Неопределено  Тогда
	Если  НЕ Параметры.Свойство("ТаблицаДокументов") Тогда
		Параметры.Вставить("ТаблицаДокументов",Новый ТаблицаЗначений);
		Параметры.ТаблицаДокументов.Колонки.Добавить("Порядок",Новый ОписаниеТипов("Число"));
		Параметры.ТаблицаДокументов.Колонки.Добавить("Объект");
	КонецЕсли;	
	НоваяСтрока = Параметры.ТаблицаДокументов.Добавить();
	НоваяСтрока.Порядок = ПараметрыОбъекта["Порядок"];
	НоваяСтрока.Объект = Объект;
КонецЕсли;
Показать
Rusbread; Vida; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tusv 211 17.04.19 13:14 Сейчас в теме
(1) 1. Счет фактура проводится раньше
2. Документ основание указан в шапке, а не табличной части ДокументыОснования
3. 1 и 2 вместе
4. wolfalan 25 17.04.19 15:26 Сейчас в теме
Проверьте проводки и движения по регистрам после обмена и после ручного проведения, чтобы убедиться, что данные хорошо загрузились.
Если все ок, то смотреть (2).

.
8. Vida 15 18.04.19 00:12 Сейчас в теме
(4)Смотрела проводки и движения. Одинаковые.
из этого:
1. Счет фактура проводится раньше
2. Документ основание указан в шапке, а не табличной части ДокументыОснования

проверила №2 ДокументОснование есть и в шапке и в табл части ДокументыОснования

Подскажите, как проверить №1 время у них одинаковое до секунды
12. tusv 211 18.04.19 09:58 Сейчас в теме +0.24 $m
(8) Запросом. С сортировкой по моменту времени
ВЫБРАТЬ 
	&РТУ КАК Документ,
	ВЫРАЗИТЬ(&РТУ КАК Документ.РеализацияТоваровУслуг).МоментВремени КАК МоментВремени

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	&СчетФактура,
	ВЫРАЗИТЬ(&СчетФактура КАК Документ.СчетФактураВыданный).МоментВремени

УПОРЯДОЧИТЬ ПО
	МоментВремени УБЫВ
Показать

Увы Счет фактура раньше при одинаковом времени.
Варианты
1. Самое простое.В ПКО прибавлять секунду, если Даты равны и поиск только по УИДу. Использовать обязательно функцию Мин(Источник.ДокументОснование.Дата+1 , КонецДня(Источник.ДокументОснование.Дата))
2.Вариант муторный. Определить свой порядок проведения. В ПКО добавить Параметр Порядок, В глобальный обработчик "После загрузки объекта" добавлять Объект в таблицу значений и проводить в После загрузки данных
Пример
Если ИмяТипаОбъекта = "Документ" и не ПараметрыОбъекта = Неопределено и не ПараметрыОбъекта["Порядок"] = Неопределено  Тогда
	Если  НЕ Параметры.Свойство("ТаблицаДокументов") Тогда
		Параметры.Вставить("ТаблицаДокументов",Новый ТаблицаЗначений);
		Параметры.ТаблицаДокументов.Колонки.Добавить("Порядок",Новый ОписаниеТипов("Число"));
		Параметры.ТаблицаДокументов.Колонки.Добавить("Объект");
	КонецЕсли;	
	НоваяСтрока = Параметры.ТаблицаДокументов.Добавить();
	НоваяСтрока.Порядок = ПараметрыОбъекта["Порядок"];
	НоваяСтрока.Объект = Объект;
КонецЕсли;
Показать
Rusbread; Vida; +2 Ответить
5. Vida 15 17.04.19 17:13 Сейчас в теме
(2)
Сейчас проверю 1 и 2. Но мне кажется что если бы подобное имело место, то эта странность бы возникла не 2 дня назад...
6. Vida 15 17.04.19 21:47 Сейчас в теме
(2)Еще странность
наверное я зря думаю на обновление БП
тк оно прошло 5 апреля, а предупреждения с 14

Сравнила стандартные правила обмена из БП до и после обновления = они идентичны.
7. tusv 211 17.04.19 22:29 Сейчас в теме
(6)Проверьте регистр сведений ПравилаДляОбменаДанными. Могет быть там загружены другие правила
9. Vida 15 18.04.19 00:17 Сейчас в теме
(7)Проверила, в регистре все правильно. Файлы с моими датами.
Прикрепленные файлы:
11. Vida 15 18.04.19 09:13 Сейчас в теме
(2)Что 2 дня назад такого не было, это я ошиблась. Просто журнал регистрации пустой. Подняла базы недельной давности - ситуация в них такая же.
13. tusv 211 18.04.19 10:11 Сейчас в теме
(11) На самом деле. При проведении Реализации перепроводится и счет фактура. То есть. Провелась Счет фактура - заругалась, провелась накладная - все встало на свои места. Помогут варианты в (12) А может быть Хватит в ПКО счета фактуры Перед выгрузкой или Перед загрузкой прописать РежимЗаписи = "Запись"
14. Vida 15 18.04.19 10:28 Сейчас в теме
(13)Очень похоже на правду. Сейчас буду тестировать 12 и 13.
15. Vida 15 18.04.19 10:29 Сейчас в теме
(13)Кажется, у вас глубокие знания конвертации. Можете посоветовать курс или литературу?
16. tusv 211 18.04.19 11:21 Сейчас в теме
(15) Мой учебник это шишки набитые с 2005 года и внимательное чтение Информации по обработчикам. Здесь много хороших статей. Вчера например промелькнула дельная статья
Кстати. Установки Режима записи в Запись достаточно. Счет фактура не будет проводится, а свойство Проведен в истина заставит Реализацию провести счет фактуру
19. Vida 15 19.04.19 10:56 Сейчас в теме
(16)Нашла вот какую ерунду:

В модуле объекта КонвертацияОбъектовИнформационныхБаз
в процедуре Процедура ВыполнитьОтложенноеПроведениеДокументов()
			Если Объект.ПроверитьЗаполнение() Тогда
				
				// При проведении документа снимаем запрет на выполнение ПРО,
				// т.к. ПРО были проигнорированы при обычной записи документа с целью оптимизации скорости загрузки данных.
				Если Объект.ДополнительныеСвойства.Свойство("ОтключитьМеханизмРегистрацииОбъектов") Тогда
					Объект.ДополнительныеСвойства.Удалить("ОтключитьМеханизмРегистрацииОбъектов");
				КонецЕсли;
				
				ОбменДаннымиСервер.ПропуститьПроверкуЗапретаИзменения();
				Объект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
				
				// Выполняем попытку проведения документа.
				Объект.Записать(РежимЗаписиДокумента.Проведение);
				
				ДокументПроведенУспешно = Объект.Проведен;
				
			Иначе
			//Видана+ мое доп предупреждение	
			ОбменДаннымиСервер.ЗарегистрироватьОшибкуПроведенияДокумента(Объект, УзелОбменаЗагрузкаДанных, "Моя ошибка!!! ", Истина);
			//=
			ДокументПроведенУспешно = Ложь;
				
			КонецЕсли;
Показать


А этот Объект.ПроверитьЗаполнение() вызывает
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
из модуля объекта документа СчетФактураПолученный
и ней в том числе такой фрагмент:

		Для каждого СтрокаТЧ Из ДокументыОснования Цикл
			Если ЗначениеЗаполнено(СтрокаТЧ.ДокументОснование)
				И ТипЗнч(СтрокаТЧ.ДокументОснование) <> Тип("ДокументСсылка.ДокументРасчетовСКонтрагентом")
				И ТипЗнч(СтрокаТЧ.ДокументОснование) <> Тип("ДокументСсылка.ОтчетКомитентуОПродажах")
				И НЕ СтрокаТЧ.ДокументОснование.Проведен Тогда
					ТекстСообщения = НСтр("ru = 'Документ не проведен. Счет-фактуру можно провести только на основании проведенного документа.'");
					ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(
						"Колонка", 
						"Корректность", 
						"Документ-основание", 
						СтрокаТЧ.НомерСтроки, 
						"Документы-основания счета-фактуры", 
						ТекстСообщения);
					ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
						ТекстСообщения,, "НадписьДокументыОснования",, Отказ);
			КонецЕсли;
		КонецЦикла;
Показать


и это и есть текст предупреждений которые мне не нравятся.

те эту СФполуч таки пытаются провести при непроведенном ДокументеОсновании

аааа((((((((
17. Vida 15 19.04.19 10:41 Сейчас в теме
(13)Наверное у меня какая-то другая причина или не пойму...
Проверяла запросом порядок моментов времени, на которые только что получила предупреждения = все хорошо, момент у счет-фактуры позже.

Но ведь то что моменты позже из этого не следует что их не проводили раньше?

Добавляла
РежимЗаписи = "Запись" в ПКО ПередЗагрузкой.
И ничего не изменилось, все то же самое. Пробовала даже РежимЗаписи = "ОтменаПроведения"

Уже думаю может действительно там что-то не то 1 строкой ДокументовОснований
18. tusv 211 19.04.19 10:55 Сейчас в теме
(17)Прошу прощения. Я Вас ввел в заблуждение с секундами. Все таки 12 пункт 2. На самом деле не критично, счет фактура все равно проводится правильно, если верить типовым правилам и конфигурациям. Но все таки скиньте файл правил. Поправлю. Мне так проще
20. Vida 15 19.04.19 11:54 Сейчас в теме
(18)Похоже все таки секунды?
Смотрю ту жеобработку КонвертацияОбъектовИнформационныхБаз:

Процедура ВыполнитьОтложенноеПроведениеДокументов()
	
	Если ДокументыДляОтложенногоПроведения().Количество() = 0 Тогда
		Возврат // нет документов в очереди
	КонецЕсли;
	
	// Сворачиваем таблицу по уникальным полям.
	ДокументыДляОтложенногоПроведения().Свернуть("ДокументСсылка, ДатаДокумента");
	
	// Сортируем документы по возрастанию даты документов.
	ДокументыДляОтложенногоПроведения().Сортировать("ДатаДокумента");
	
Показать


Тупо по дате?
23. tusv 211 21.04.19 10:26 Сейчас в теме
(20)
ВыполнитьОтложенноеПроведениеДокументов()

Как то натолкнула на мысль экспортная функция ДокументыДляОтложенногоПроведения(). Этож можно использовать в После загрузки данных!
Добавить Колонку Порядок, пробежаться Счет фактуре присвоить порядок выше, отсортировать,
Процедуру ВыполнитьОтложенноеПроведениеДокументов помещаем в алгоритмы. Чуть подшаманим с сортировкой по Дате и Порядку, остальное без изменений.
А в обработчике После загрузки данных пишем
//Проверим, что обмен идет из обработки КонвертацияОбъектовИнформационныхБаз, а не через универсальную
Если Метаданные().Имя = "КонвертацияОбъектовИнформационныхБаз" Тогда
	ДокументыДляОтложенногоПроведения().Колонки.Добавить("Порядок",Новый ОписаниеТипов("Число"));
	Для Каждого Стр из ДокументыДляОтложенногоПроведения() Цикл
		Если ТипЗнч(Стр.ДокументСсылка) = Тип("ДокументСписок.СчетФактураВыданный") Тогда
			стр.Порядок = 10;
		КонецЕсли;	
	КонецЦикла;
	Выполнить(Алгоритмы.ВыполнитьОтложенноеПроведениеДокументов);
        //Отложенное проведение уже выполнили, очистим
	ДокументыДляОтложенногоПроведения().Очистить();
КонецЕсли;
Показать
21. Vida 15 19.04.19 12:31 Сейчас в теме
(18)Уменьшила время ПК в базе источнике и наладилось.
в 12 №1 = верное решение!
Вот нет, что бы раньше попробовать. Стыдно перед работодателем столько времени на такую фигню тратить.

Как думаете лучше в правилах время править или в базе источнике при создании (например)?

На скрине это я уже своих предупреждения выводила, чтобы порядок проведения видеть.
Прикрепленные файлы:
24. tusv 211 21.04.19 11:49 Сейчас в теме
(21)
Как думаете лучше в правилах время править или в базе источнике при создании (например)?

В базе? А зачем лишнее телодвижение со временем? Есть смысл, когда проведение не оперативное, а приход позже расхода в одну секунду.
Но. Мне сейчас нравиться мое же решение в (23). Возьму себе на вооружение. Хотя он и повторяет мой же алгоритм, но не до списали граждане из 1С. Двоешники:)
22. Vida 15 19.04.19 12:39 Сейчас в теме
(18)Вот интересно почему

ДокументыДляОтложенногоПроведения().Сортировать("ДатаДокумента");

при одинаковой дате ставит счет-фактуру полученную вперед?
3. ksen 17.04.19 13:17 Сейчас в теме
Проверьте авансы на всякий случай и даты связанных документов, а еще попробуйте распровести и провести еще раз какой-нибудь документ.
Ошибок при обмене не должно быть.
10. Vida 15 18.04.19 00:25 Сейчас в теме
(3)Авансы автоматические. В связанных документах только ПоступлениеТоваровУслуг и Сч-ф полученная. Их дата время совпадает.

Распроводила и проводила.

При повторном обмене (меняла комментарии) все повторяется: пишет что предупреждений нет, но в журнале они появились.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот