Перезаполнение страны в 1А листах (Контролируемые сделки) БП3

Перед вами пример задачи, где предметная область абсолютно не знакомая, но зато понятно, что надо делать.

Речь идет об 1А листах контролируемых сделок. Мануал по ним занимает множество листов.

Через меню «Все функции» я нашел, что существует документ «Лист 1А»:

Окрыл этот документ и понял, что нужно просто заполнить страну из предмета сделки, если он — номенклатура.

В итоге написал простейшую обработку и прогнал ее по позициям:

Код обработки:


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

&НаКлиенте
Процедура ОбработатьДокументы(Команда)
	ОбработатьДокументыНаСервере();
КонецПроцедуры

Можно было просто код запустить в консоли кода.

Среда: БП3 3.0.95.29 Объем: 1 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *