Конфигурация 1c Торговля – Изменение цен номенклатуры

Доброго времени суток, уважаемые посетители! На этом блоге мы уже выкладывали обработку, которая наглядно показывала, как удалить элементы справочника, в наименовании которых встречается введенная пользователем строка. Сегодня мы рассмотрим, как измененить цены в справочнике номенклатура в конфигурации 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 ответы

Ответить

Want to join the discussion?
Feel free to contribute!

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

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