Движение по регистрам

1. jaroslav.h 182 09.10.14 11:17 Сейчас в теме
Мира вам.
Есть документ Поступление товаров и услуг я сделал, что бы цены которые есть в колонке Цена попадало в карточку Номенклатуры ЦеныНоменклатуры (для типа цен Закупочная) через регистр сведений ЦеныНоменклатуры
Для Каждого эл Из Товары Цикл 
	    	   Движение = Движения.ЦеныНоменклатуры.Добавить();
	    	   Движение.Период = Дата;
	    	   Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("грн");
	    	   Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");
	    	   Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000015");
	    	   Движение.Номенклатура = эл.Номенклатура;
	    	   Движение.Цена = эл.Цена;
	   	КонецЦикла;
Показать

все работает но тут появилась еще одна "хотелка", добавил колонку с полем ввода в форме документа где хочу, что бы при вводе в колонке цены (продажная будет) так же эти цены попадали в карточку номенклатуры ЦеныНоменклатуры (Тип цен РозничныйМаг№1, РозничныйМаг№2), что было и сделано
Для Каждого эл Из Товары Цикл 
			Движение = Движения.ЦеныНоменклатуры.Добавить();
			Движение.Период = Дата;
			Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("грн");
			Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");
			Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000011");		
			Движение.Номенклатура = эл.Номенклатура;
			Движение.Цена = эл.ЦенаПродажная; // это добавленное поле		
		КонецЦикла;
Для Каждого эл Из Товары Цикл 
			
			Движение = Движения.ЦеныНоменклатуры.Добавить();
			Движение.Период = Дата;
			Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("грн");
			Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");
			Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012");	
			Движение.Номенклатура = эл.Номенклатура;
			Движение.Цена = эл.ЦенаПродажная;


Показать

что как бы и работает но бывает такое, что в документе не надо изменять поле ввода колонки ЦенаПродажная и если я не ввожу в это поле значение то естественно удаляется цены с карточки номенклатура ЦеныНоменклатуры для магазинов РозничныйМаг№1, РозничныйМаг№2
я решил добавить условие в одни из последних циклов
Для Каждого эл Из Товары Цикл 
			
			Движение = Движения.ЦеныНоменклатуры.Добавить();
			Движение.Период = Дата;
			Движение.Валюта = Справочники.Валюты.НайтиПоНаименованию("грн");
			Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");
			Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000012");	
			Движение.Номенклатура = эл.Номенклатура;
			Если эл.ЦенаПродажная = 0 Тогда 
				Прервать;
			Иначе 
				Движение.Цена = эл.ЦенаПродажная;
			КонецЕсли;
Показать

но тут поработав отладчиком увидел, что значение Движение.Цена при начале первого цикла в условии уже получает значение, а мне как то нужно обойти это получение и сделать так, что если я ничего не ввожу в поле эл.ЦенаПродажная то значение розничных цен оставались не измененными, не менялись.
Да, вариант добавление еще одного измерения в регистре сведений есть но тут дело в том, что при открытии карточки номенклатуры страницы ЦеныНоменклатуры происходит получение значение типов цен с измерения Цена, а не Цена1, а отследить где оно такое происходит не получается, там голову можно сломать с километровым кодом и заветвениями в десяток общих модулей и т.д.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. monkbest 114 09.10.14 13:03 Сейчас в теме
Ну ты напиши условие до добавления строки в движения. "Движение = Движения.ЦеныНоменклатуры.Добавить();"

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

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