Не перепровести документы (1 квартал)

1. jimli 6 10.04.20 18:16 Сейчас в теме
Перенесла документы, сводить квартал - пошли проблемы с резервами и оказалось, что не все приходы помещены на склад. Склад неордерный. Решила провести программно, ошибка для всех поступлений:

Оформлено больше чем указано в распоряжении Заказ поставщику номер ... дата...

Поступление проводится, если отвязать заказ. Отменила проведение квартала, написала процедуру, отвязывающую заказ. Но по-видимости неправильно, не проходит, фактически ничего не отвязывается (я присваиваю об.ЗаказКлиента = Документы.ЗаказКлиента.ПустаяСсылка() )

&НаСервереБезКонтекста
Процедура ПроводимРеалНаСервере(ДоДаты)
	ДатаДляОтбора = Дата(2020,1,7);
	пока ДатаДляОтбора < ДоДаты цикл
		 запрос = новый запрос;
		запрос.текст = "ВЫБРАТЬ 
		               |	РеализацияТоваровУслуг.Ссылка КАК Ссылка,
		               |	РеализацияТоваровУслуг.ЗаказКлиента КАК ЗаказКлиента,
		               |	РеализацияТоваровУслуг.Сделка КАК Сделка
		               |ИЗ
		               |	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		               |ГДЕ
		               |	РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ
		               |	И РеализацияТоваровУслуг.Проведен = ЛОЖЬ
					   |	И РеализацияТоваровУслуг.Дата  МЕЖДУ &Дата1 И &Дата2";
		запрос.УстановитьПараметр("Дата1", НачалоДня(ДатаДляОтбора));
		запрос.УстановитьПараметр("Дата2", КонецДня(ДатаДляОтбора));
		рез = запрос.Выполнить();
		если не рез.Пустой() тогда
			Выб = рез.Выбрать();
			пока выб.Следующий() цикл
				Об = выб.Ссылка.ПолучитьОбъект();
				Сообщить(Об.Ссылка);
				попытка
					об.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
				Исключение
					СохрЗаказ = об.ЗаказКлиента;
					об.ЗаказКлиента = Документы.ЗаказКлиента.ПустаяСсылка();
					об.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
					об.ЗаказКлиента =СохрЗаказ;
					об.Записать();
				КонецПопытки;
			конеццикла;
		КонецЕсли;
	
		ДатаДляОтбора = ДатаДляОтбора + 60*60*24;
	 конеццикла;
	 
	 
	
КонецПроцедуры
Показать

Подскажите, что не так? Как программно отвязать заказ от поступления?
Может как-то не отвязывая можно? Может можно контроль отключить?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. Xershi 1474 11.04.20 18:22 Сейчас в теме
(1) отключите контроль и проводите.
Иногда глупый контроль не даёт перепровести документы.
Но перед этим проверьте что бы потом все корректно было.
4. jimli 6 11.04.20 21:54 Сейчас в теме
(3) отключила все: контроль по организации, остатков по складу.
Контроль идет, так как есть ссылка на заказы. Я уже по коду посмотрела, для того, чтобы документ провелся, мне пришлось убирать ссылку на заказ в шапке, в строках:

&НаСервереБезКонтекста
Процедура ПроводимПостНаСервере(ДоДаты)

	ДатаДляОтбора = Дата(2020,1,7);
	пока ДатаДляОтбора < ДоДаты цикл
		зПриобр = новый запрос;
		зПриобр.текст = "ВЫБРАТЬ 
		                |	ПриобретениеТоваровУслуг.Ссылка КАК Ссылка,
		                |	ПриобретениеТоваровУслуг.ЗаказПоставщику КАК ЗаказПоставщику
		                |ИЗ
		                |	Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
		                |ГДЕ
		                |	ПриобретениеТоваровУслуг.ПометкаУдаления = ЛОЖЬ
		                |	И ПриобретениеТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
		                |	И ПриобретениеТоваровУслуг.Проведен = ЛОЖЬ";
		зПриобр.УстановитьПараметр("Дата1", НачалоДня(ДатаДляОтбора));
		зПриобр.УстановитьПараметр("Дата2", КонецДня(ДатаДляОтбора));
		рПриобр = зПриобр.Выполнить();
		если не рПриобр.Пустой() тогда
			Выб1 = рПриобр.Выбрать();
			пока Выб1.Следующий() цикл
				Об = Выб1.Ссылка.ПолучитьОбъект();
				Сообщить(Об.Ссылка);
					ЕСЛИ ЗначениеЗаполнено(об.ЗаказПоставщику) ТОГДА
						СохрЗаказ = об.ЗаказПоставщику;
						об.ПоступлениеПоЗаказам = ложь;
						об.ЗаказПоставщику = Неопределено;
						Об.РасшифровкаПлатежа.Очистить();
						
						Для каждого ТекСтрТов из Об.РасшифровкаПлатежа цикл
							Об.РасшифровкаПлатежа.Удалить(ТекСтрТов);
						КонецЦикла;
			
		 				для каждОГО стр из об.товары цикл
							стр.ЗаказПоставщику = Неопределено;
							стр.КодСтроки = 0;
						КонецЦикла;
						об.Записать();
					КОНЕЦЕСЛИ;
			конеццикла;
		КонецЕсли;
			
		ДатаДляОтбора = ДатаДляОтбора + 60*60*24;
	 конеццикла; 
	 
	
КонецПроцедуры

Показать

Глобально убираю ссылки на заказы, перепровожу. Выяснила, что резервы сели криво, заказы не закрываются, мрак...
5. Xershi 1474 11.04.20 23:01 Сейчас в теме
(4) этого не достаточно.
Нужно через доработку или как я через расширение.
6. jimli 6 12.04.20 08:23 Сейчас в теме
(5) Почему недостаточно? Все проводится, ошибок нет.
На какие грабли я рискую наступить?
Через какое расширение вы перепроводили? Можете поделиться?
7. Xershi 1474 12.04.20 08:26 Сейчас в теме
2. jimli 6 10.04.20 22:08 Сейчас в теме
Спрашиваю про поступления, а код вставила с реализации...
Нужный код:
&НаСервереБезКонтекста
Процедура ПроводимПостНаСервере(ДоДаты)

	ДатаДляОтбора = Дата(2020,1,7);
	пока ДатаДляОтбора < ДоДаты цикл
		//сообщить(ДатаДляОтбора);
		зПриобр = новый запрос;
		зПриобр.текст = "ВЫБРАТЬ
		                |	ПриобретениеТоваровУслуг.Ссылка КАК Ссылка,
		                |	ПриобретениеТоваровУслуг.ЗаказПоставщику КАК ЗаказПоставщику
		                |ИЗ
		                |	Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
		                |ГДЕ
		                |	ПриобретениеТоваровУслуг.ПометкаУдаления = ЛОЖЬ
		                |	И ПриобретениеТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
		                |	И ПриобретениеТоваровУслуг.Проведен = ЛОЖЬ";
		зПриобр.УстановитьПараметр("Дата1", НачалоДня(ДатаДляОтбора));
		зПриобр.УстановитьПараметр("Дата2", КонецДня(ДатаДляОтбора));
		рПриобр = зПриобр.Выполнить();
		если не рПриобр.Пустой() тогда
			Выб1 = рПриобр.Выбрать();
			пока Выб1.Следующий() цикл
				Об = Выб1.Ссылка.ПолучитьОбъект();
				Сообщить(Об.Ссылка);
				попытка
					об.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
				Исключение	
					СохрЗаказ = об.ЗаказПоставщику;
					об.ЗаказПоставщику = Документы.ЗаказПоставщику.ПустаяСсылка();
					об.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
					об.ЗаказПоставщику =СохрЗаказ;
					об.Записать();
				КонецПопытки;
			конеццикла;
		КонецЕсли;
			
		ДатаДляОтбора = ДатаДляОтбора + 60*60*24;
	 конеццикла; 
	 
	
КонецПроцедуры
Показать
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)