Добавление записей в подчинённый регистр сведений "ЦеныНоменклатуры"

1. OMOIVA 28.04.22 10:08 Сейчас в теме
Доброго времени суток. Прошу подсказать куда копать.
1С 8.3 УТ 10.3 Обычные формы.
Пишу обработку загрузки цен с Excel.
Всё готово за исключением того, что не могу найти инфу, как правильно загружать данные в подчинённый регистр.
Регистр - ЦеныНоменклатуры, регистратор - УстановкаЦенНоменклатуры.

При попытке записи, ошибок нет, при открытии документа (Установка цен номенклатуры) куда производилась запись - пусто.

Код:
ВыбранныйРегистратор = УстановщикЦен;
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);
	
НоваяЗапись  = НаборЗаписей.Добавить();
	
НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("УТ000109245");	
НоваяЗапись.Цена = 15;
НоваяЗапись.ЕдиницаИзмерения = Справочники.Номенклатура.НайтиПоКоду("УТ000109245").ЕдиницаХраненияОстатков;
НоваяЗапись.Валюта = Валюты.Ссылка;
НоваяЗапись.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
НоваяЗапись.Регистратор = ВыбранныйРегистратор;
	
НаборЗаписей.Записать(Ложь);
Показать
Найденные решения
18. OMOIVA 28.04.22 14:05 Сейчас в теме
Ещё раз всем спасибо за ответы, примеры и подсказки.

В итоге код загрузки цен в документ (УстановкаЦенНоменклатуры) выглядит так:

ОбъектДок = УстановщикЦен.ПолучитьОбъект(); //Получаю объект через ссылку
НоваяСтрока = ОбъектДок.Товары.Добавить(); //добавление строк в табличный документ "Товары"

//Далее идут реквизиты табличного поля, в моём случае табличного поля "Товары", все они обязательны к заполнению, а иначе АИШБКА!
НоваяСтрока.Номенклатура = ИщемВ1С; // ссылка на товар в номенклатуре
НоваяСтрока.Цена = Число(БерёмЦены); // переменная цены взятая из нужной ячейки		  
НоваяСтрока.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная"); //поиск нужного типа цен
НоваяСтрока.Валюта = Валюты.Ссылка; // ссылка на выбранную валюту
НоваяСтрока.ЕдиницаИзмерения = ИщемВ1С.ЕдиницаХраненияОстатков; //т.к. код единицы хранения остатков уникален, взял его через реквизит по ссылке

ОбъектДок.Записать(РежимЗаписиДокумента.Запись);

Показать


И так как скорее всего заполнение будет происходить в цикле, после завершения цикла, нужно будет провести изменённый документ.

ОбъектДок.Записать(РежимЗаписиДокумента.Проведение);


Ранее пользовался готовой обработкой, где этого не было реализовано и приходилось "вручную", через открытие документа, проводить его через ОК.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 28.04.22 10:14 Сейчас в теме
(1)
При попытке записи, ошибок нет, при открытии документа куда производилась запись - пусто.

Конечно пусто. В сам документ ничего не записывали. Использовали ссылку на документ для записи в РС. В самом РС записи будут, но в документе ничего не будет. И при перепроведение документа все записанные тиким способом записи в РС пропадут.
Хотите видет данные в документе, заполняйте сам документ и проводите его. Тогда данные будут как в документе, так и в РС.
3. OMOIVA 28.04.22 10:17 Сейчас в теме
Предполагал, что установка цен номенклатуры берёт данные из регистра.
В таком случае вопрос, для чего заполнять и регистр и документ одними и теми же данными?
5. lmnlmn 69 28.04.22 10:20 Сейчас в теме
(3)Все наоборот происходит. Регистр ничего не берет и брать не может. В него кто-то и что-то записывает.
6. OMOIVA 28.04.22 10:23 Сейчас в теме
То есть, чтобы загрузить цены, мне просто их нужно записать в соответствующий документ, провести и всё?
8. vlad636 12 28.04.22 10:24 Сейчас в теме
(6)Да, документ сам создаст движения
11. OMOIVA 28.04.22 10:35 Сейчас в теме
Спасибо добрый человек :)
9. OMOIVA 28.04.22 10:24 Сейчас в теме
Не поймите не правильно, второй день изучаю поиск по соот. запросам, смотрю примеры.
4. OMOIVA 28.04.22 10:19 Сейчас в теме
И что необходимо заполнять первым, подчинённый регистр или документ.
7. lmnlmn 69 28.04.22 10:24 Сейчас в теме
(4) Задачу надо понять вашу. Может и так как есть сойдет.
10. OMOIVA 28.04.22 10:32 Сейчас в теме
Задача на самом деле проста.

Есть присланный поставщиком файл Excel с артикулами и ценами, которые впоследствии копируются и вставляются в готовые поля табличного документа в обработке.
В 1С есть документ: УстановщикЦенНоменклатуры, где около 100 документов с ценами на разные бренды.
Ну и желание записывать цены в документ, через собственно-кривонаписанную обработку.
Т.к. часто необходимо быстро обновить цены на 5к товаров за пол часа, что в ручном режиме недостижимо.

Обработка в целом готова, реализация перебора нужных ячеек реализована, проверка на совпадения, другие условия и пр.

Единственное, поиск не дал нужного ответа, как правильно добавлять данные в этот самый документ (УстановкаЦенНоменклатуры).
Прикрепленные файлы:
12. spacecraft 28.04.22 10:39 Сейчас в теме
(10) создаете новый документ УстановщикЦенНоменклатуры и заполняете. Затем проводите.
Как подробно заполнять документ никто не подскажет, так как похоже конфигурация самописная. Но общий алгоритм такой:
- создается новый документ.
- заполняются обязательные реквизиты документа.
- заполняется ТЧ документа.
- проводится документ.
Обычно этого достаточно.
13. OMOIVA 28.04.22 10:48 Сейчас в теме
Благодарю за развёрнутый ответ.
Новый документ не обязательно же создавать? Просто в базе уже есть нужный.
14. spacecraft 28.04.22 10:51 Сейчас в теме
(13) обычно необходимо хранить периодические данные. Соответственно для каждого периода создается свой документ.
15. Azgerd 28.04.22 10:53 Сейчас в теме
Если нужно редактировать старый документ, тогда
ДокументОбъект=СсылкаНаДокумент.ПолучитьОбъект();
ДокументОбъект.НужныйРеквизит=НужноеЗначениеДляНужногоРеквизита;
ДокументОбъект.записать(РежимЗаписиДокумента.Проведение);
16. Azgerd 28.04.22 10:56 Сейчас в теме
А СсылкаНаДокумент = Документы.НужныйДокумент.НайтиПоКоду() Или из запроса получить ссылку на документ
17. OMOIVA 28.04.22 11:07 Сейчас в теме
На счёт этого в курсе, спасибо. У меня элемент формы уже хранит ссылку на документ.
18. OMOIVA 28.04.22 14:05 Сейчас в теме
Ещё раз всем спасибо за ответы, примеры и подсказки.

В итоге код загрузки цен в документ (УстановкаЦенНоменклатуры) выглядит так:

ОбъектДок = УстановщикЦен.ПолучитьОбъект(); //Получаю объект через ссылку
НоваяСтрока = ОбъектДок.Товары.Добавить(); //добавление строк в табличный документ "Товары"

//Далее идут реквизиты табличного поля, в моём случае табличного поля "Товары", все они обязательны к заполнению, а иначе АИШБКА!
НоваяСтрока.Номенклатура = ИщемВ1С; // ссылка на товар в номенклатуре
НоваяСтрока.Цена = Число(БерёмЦены); // переменная цены взятая из нужной ячейки		  
НоваяСтрока.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная"); //поиск нужного типа цен
НоваяСтрока.Валюта = Валюты.Ссылка; // ссылка на выбранную валюту
НоваяСтрока.ЕдиницаИзмерения = ИщемВ1С.ЕдиницаХраненияОстатков; //т.к. код единицы хранения остатков уникален, взял его через реквизит по ссылке

ОбъектДок.Записать(РежимЗаписиДокумента.Запись);

Показать


И так как скорее всего заполнение будет происходить в цикле, после завершения цикла, нужно будет провести изменённый документ.

ОбъектДок.Записать(РежимЗаписиДокумента.Проведение);


Ранее пользовался готовой обработкой, где этого не было реализовано и приходилось "вручную", через открытие документа, проводить его через ОК.
Оставьте свое сообщение

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