1C:Бухгалтерия
1С:CRM ПРОФ, КОРП
1С:ERP Управление предприятием 2
Платформа 1С v8.3
Корп. решения 1С
Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В УТ 10.3. Документ поступление товаров услуг делает движение в регистр сведений цены номенклатуры. Периодичность регистра в пределах дня. Значить товар может делать движению только один раз в день. Но есть токая задача. Пример : В первым документа поступление я указал товар (Клавиатура 002) и движения было. А в втором документа я уже указал два товар один из них Клавиатура 002 а другой Экран. Когда пользователь нажмёт кнопку ОК, как надо появляется сообщение запись с такими ключевыми полями существует. Задача в том что код проста сделал движению только для товара Экран.
Написал код в процедуру Обработка проведение. Но бывают ошибки. Можете дать советы что как решить эту задачу.
Спасибо всем за ранее.
Срез последних тоже использовал но не работал.
Написал код в процедуру Обработка проведение. Но бывают ошибки. Можете дать советы что как решить эту задачу.
Спасибо всем за ранее.
ТипЦенаПродажи = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000002");
Для Каждого ТекСтрокаТовары Из Товары Цикл
Если ТекСтрокаТовары.ЦенаПродажи = 0 Тогда
Продолжить;
КонецЕсли;Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ЦеныНоменклатуры.Период,
|ЦеныНоменклатуры.Регистратор,
|ЦеныНоменклатуры.ТипЦен,
|ЦеныНоменклатуры.Номенклатура,
|ЦеныНоменклатуры.Цена
|ИЗ
|РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
|ЦеныНоменклатуры.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг И
|ЦеныНоменклатуры.ТипЦен = &ТипЦен И
|ЦеныНоменклатуры.Период = &Дата И
|ЦеныНоменклатуры.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("ТипЦен", ТипЦенаПродажи);
Запрос.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Если ПустаяСтрока(Выборка.Номенклатура) Тогда
Движение = Движения.ЦеныНоменклатуры.Добавить();
Движение.Период = Дата;
Движение.ТипЦен = ТипЦенаПродажи;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.Валюта = ТипЦенаПродажи.ВалютаЦены;
Движение.Цена = ТекСтрокаТовары.ЦенаПродажи;
Движение.ЕдиницаИзмерения = ТекСтрокаТовары.ЕдиницаИзмерения;
КонецЕсли;
КонецЦикла;
ПоказатьСрез последних тоже использовал но не работал.
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6)
Может это не надо делать в процедуре обработка проведение
ТипЦенаПродажи = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000002");
Для Каждого ТекСтрокаТовары Из Товары Цикл
Если ТекСтрокаТовары.ЦенаПродажи = 0 Тогда
Продолжить;
КонецЕсли;Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ЦеныНоменклатуры.Период,
|ЦеныНоменклатуры.Регистратор,
|ЦеныНоменклатуры.ТипЦен,
|ЦеныНоменклатуры.Номенклатура,
|ЦеныНоменклатуры.Цена
|ИЗ
|РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
|ЦеныНоменклатуры.ТипЦен = &ТипЦен И
|ЦеныНоменклатуры.Период = &Дата И
|ЦеныНоменклатуры.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Дата", НачалоДня(Дата));
Запрос.УстановитьПараметр("ТипЦен", ТипЦенаПродажи);
Запрос.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Если ПустаяСтрока(Выборка.Номенклатура) Тогда
Движение = Движения.ЦеныНоменклатуры.Добавить();
Движение.Период = Дата;
Движение.ТипЦен = ТипЦенаПродажи;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.Валюта = ТипЦенаПродажи.ВалютаЦены;
Движение.Цена = ТекСтрокаТовары.ЦенаПродажи;
Движение.ЕдиницаИзмерения = ТекСтрокаТовары.ЕдиницаИзмерения;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПоказатьМожет это не надо делать в процедуре обработка проведение
Прикрепленные файлы:

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