Периодические регистры сведений. Корректность кода

1. Panhead 11.08.24 21:02 Сейчас в теме
Здравствуйте!

Помогите пожалуйста решить проблему.
У меня есть задание:

1. Добавьте документ для установки цен номенклатуры в разных магазинах сети. (УстановкаЦенМагазина)

2. Создайте регистр сведений для хранения цены номенклатуры (ЦеныТоваров: Измерения: Товар, Магазин. Ресурсы: Цена. Режим записи регистра: Подчинённый регистратору (а именно УстановкаЦенМагазина))

3. Создайте движение документа по новому регистру

4. Добавьте в документ «Продажа» автоматическую установку актуальной цены при выборе товара. Обратите внимание, что цена может поменяться не только в случае смены товара, но и при смене магазина.




Я практически смог это сделать, но я застрял на моменте, где нужно сделать так, чтобы при изменении магазина менялась вся таблица, а не одна строка. Я ещё не совсем понимаю код 1С, и поэтому прошу вас оказать помощь. Я полагаю, что нужно добавить цикл в Процедура МагазинПриИзменении(Элемент) (документа Продажа), но у меня постоянно ошибки. Помогите пожалуйста.


С уважением, Павел!
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. starjevschik 11.08.24 22:35 Сейчас в теме
(1)
Я практически смог это сделать

- А у вас этот диск лицензионный?
- Практически да.

К преподу, все эти вопросы адресуй своему преподу, пусть работает, отрабатывает свою зарплату.
8. ovadia 11.08.24 23:31 Сейчас в теме
(1) Сделайте подобно следующему примеру. В процедуре МагазинПриИзмененииНаСервере() добавьте переменную (НовыйМагазин) получающую значение Объект.Магазин и поменяйте текст запроса на выборку из вашего РегистрСведений.ЦеныТоваров с условием проверки НовыйМагазин, а также товаров из списка.

&НаСервере
Процедура МагазинПриИзмененииНаСервере()
 
    СписокТоваров = Новый СписокЗначений;
    Для каждого элм из Объект.Товары цикл
		СписокТоваров.Добавить(элм.Товар);
    КонецЦикла;

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

КонецПроцедуры
	

&НаКлиенте
Процедура МагазинПриИзменении(Элемент)
	МагазинПриИзмененииНаСервере();
КонецПроцедуры
Показать
9. user2033930 11.08.24 23:48 Сейчас в теме
(8) Самый бесполезный код, который я когда либо видел. А видел я многое.
10. ovadia 11.08.24 23:58 Сейчас в теме
(9) Ну так напишите, почему он бесполезный и опубликуйте свой полезный.
11. user2033930 12.08.24 00:05 Сейчас в теме
(10) Сначала ты расскажи, что он делает? Ты ж его написал.
Интересно просто. А то расскажу я, что он нихрена не делает, кроме
а) бесполезного вызова сервера с клиента
б) бесполезного обращения к СУБД
в) очень полезного задвоения строк в форме документа
12. ovadia 12.08.24 00:16 Сейчас в теме
(11) Во первых, этот код написан совершенно не для тебя, а для топикастера. Во вторых, это пример, а не готовое решение и никто не запрещает топикастеру очищать табличную часть перед выводом новых строк. Ну и в третьих, мне что-то вообще не видно каких то осмысленных твоих предложений.
13. user2033930 12.08.24 09:26 Сейчас в теме
(12)
Ну и в третьих, мне что-то вообще не видно каких то осмысленных твоих предложений.
Да я как бы и не собирался... Могу бесплатно показать в каком направлении стоит сарай с удочками.
2. user2033930 11.08.24 21:06 Сейчас в теме
Направление правильное. Добавляй цикл, посмотрим на твои ошибки.

С наименованиями переменных беда, конечно.
3. Panhead 11.08.24 21:17 Сейчас в теме
&НаКлиенте
Процедура МагазинПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
Для Каждого СтрокаТабличнойЧасти Из Элементы.Товары Цикл
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Товар, Объект.Магазин);
РасчётСтоимости.РассчитатьСтоимость(СтрокаТабличнойЧасти); 
КонецЦикла:
КонецПроцедуры




Добавлял в различные места данный цикл, но пишет что.........
Итератор для значения не определен
{Документ.Продажа.Форма.ФормаДокумента.Форма(27)}:Для Каждого СтрокаТабличнойЧасти Из Элементы.Товары Цикл

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
4. user2033930 11.08.24 21:27 Сейчас в теме
(3) Причем тут Элементы.Товары??? Ты работаешь с данными. Данные содержатся не в элементах.
5. Panhead 11.08.24 21:54 Сейчас в теме
(4) Получается в регистре сведении: ЦеныТоваров? И к нему обращаться?
6. user2033930 11.08.24 21:56 Сейчас в теме
(5) У тебя строки документа содержатся в регистре? Тебе строки нужны!
Оставьте свое сообщение

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