Доброго времени суток, уважаемые посетители! На этом блоге мы уже выкладывали обработку, которая наглядно показывала, как удалить элементы справочника, в наименовании которых встречается введенная пользователем строка. Сегодня мы рассмотрим, как измененить цены в справочнике номенклатура в конфигурации 1C:Торговля версии системы 1C:Предприятие 7.7. Итак, приступим.

Для начала рассмотрим процедуру «Сформировать» обработки «Изменение цен номенклатуры», её код здесь:

Процедура Сформировать()
	НеВыбран = 0; СтрокаНеВыбран = "";
 //Сначала нужно проверить заполнены ли необходимые реквизиты формы:
 Если ВалютаЦены.Выбран() = 0 Тогда
	НеВыбран = 1;
	СтрокаНеВыбран = "Валюта цены";
	Активизировать("ВалютаЦены");
 КонецЕсли;
 Если ЕдИзмЦены.Выбран() = 0 Тогда
	НеВыбран = 1;
	СтрокаНеВыбран = СтрокаНеВыбран + " Единица измерения цены";
	Активизировать("ЕдИзмЦены");
 КонецЕсли;
 Если Дата(0) = ДатаЦены Тогда
	НеВыбран = 1;
	СтрокаНеВыбран = СтрокаНеВыбран + " Дата цены";
	Активизировать("ДатаЦены");
 КонецЕсли;
 Если НеВыбран = 1 Тогда
	Сообщить("Не выбрана " + СтрокаНеВыбран + " !", "!");
	Возврат;
	КонецЕсли;
	Если ЦенаТовара = 0 Тогда
	Если Вопрос("Цена товара равна нулю. Продолжить?", "Да+Нет") = "Нет" Тогда
 Возврат;
 КонецЕсли;
 КонецЕсли;
 // Проверяю у скольки элементов нужно поменять цену...
	СпрТов = СоздатьОбъект("Справочник.Номенклатура");
 Если Товар.Выбран() = 1 Тогда
	// У группы?
 Если Товар.ЭтоГруппа() = 1 Тогда
	СпрТов.ИспользоватьРодителя(Товар);
	Иначе
 // У одного элемента?
	СпрТов.НайтиЭлемент(Товар);
	ИзменитьЭлемент(СпрТов.ТекущийЭлемент());
 Возврат;
 КонецЕсли;
 КонецЕсли;
 // У всех элементов справочника номенклатура, если Товар.ЭтоГруппа() = 0
	СпрТов.ВыбратьЭлементы();
 Пока СпрТов.ПолучитьЭлемент() = 1 Цикл
	Если СпрТов.ЭтоГруппа() = 1 Тогда
 Продолжить;
 КонецЕсли;
 Если ИзменитьЭлемент(СпрТов.ТекущийЭлемент()) = 0 Тогда
 Возврат;
 КонецЕсли;
 КонецЦикла;
КонецПроцедуры

Как можно догадаться в этом коде главным является функция:

//*******************************************
Функция ИзменитьЭлемент(Эл)
	Был = 0;
	СпрЦен = СоздатьОбъект("Справочник.Цены");
 ...
	// Находим в справочнике Цен, только те элементы, которые принадлежат,

 //выбранной нами номенклатуре:
	СпрЦен.ИспользоватьВладельца(Эл);
	Если ТипЦены.Выбран() = 1 Тогда
	СпрЦен.ВыбратьЭлементы();
 Пока СпрЦен.ПолучитьЭлемент() = 1 Цикл
	// Здесь находим тот тип цены, который нам нужно изменить
 Если СокрЛП(СпрЦен.ТипЦен.Наименование) = СокрЛП(ТипЦены.Наименование) Тогда
	СпрЦен.Валюта = ВалютаЦены;
	СпрЦен.Единица = НайденнаяЕдиница;
	СтараяЦена = СпрЦен.Цена;
	СпрЦен.Цена = ЦенаТовара;
	Был = 1; // Чтобы не создавать новый тип цены
	Сообщить("Изменён тип цены: '" + СпрЦен.ТипЦен.Наименование + 
	"' у номенклатуры: '" + Эл.Наименование + 
	"' старая цена была: " + СтараяЦена);
	Прервать;
	КонецЕсли;
	КонецЦикла;
	Если Был = 0 Тогда
	СпрЦен.Новый();
	СпрЦен.Валюта = ВалютаЦены;
	СпрЦен.Единица = НайденнаяЕдиница;
	СпрЦен.ТипЦен = ТипЦены;
	СпрЦен.Цена = ЦенаТовара;
	Сообщить("Создан новый тип цены: '" + СпрЦен.ТипЦен.Наименование + 
	"' у номенклатуры: '" + Эл.Наименование + "'");
 КонецЕсли;
	СпрЦен.Записать();
 Возврат 1;
	Иначе
	Сообщить("Не выбран тип цены!", "!");
	Активизировать("ТипЦены",1);
 Возврат 0;
	КонецЕсли;
КонецФункции

 


Этот блог читают уже более 3000 человек
- читай и ТЫ!
0 ответы

Ответить

Хотите присоединиться к обсуждению?
Не стесняйтесь вносить свой вклад!

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

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