Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 16:18

Автоматическое заполнение цены в документе

Автор szhutov, 10 мая 2016, 10:01

0 Пользователей и 1 гость просматривают эту тему.

szhutov

Здравствуйте! Возникла такая проблема. Документом ЛЗК списывается материал со склада по остаточной стоимости. Нужно, чтобы при выборе номенклатуры цена в документе заполнялась автоматически (как частное суммы остатка материала и количества остатка из регистра накопления).

Ничего не получается.
Вот мои художества -

Процедура МатериалыНоменклатураПриИзменении(Элемент)
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
|   ЛЗКМатериалы.Номенклатура,
|   ЛЗКМатериалы.Количество,
|   ЛЗКМатериалы.Сумма,
|   ОстаткиМатериаловОстатки.Материал,
|   ОстаткиМатериаловОстатки.КоличествоОстаток,
|   ОстаткиМатериаловОстатки.СуммаОстаток
|ИЗ
|   Документ.ЛЗК.Материалы КАК ЛЗКМатериалы
|      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки КАК ОстаткиМатериаловОстатки
|      ПО (ЛЗКМатериалы.Номенклатура = ОстаткиМатериаловОстатки.Материал)
|         И (ЛЗКМатериалы.Количество = ОстаткиМатериаловОстатки.КоличествоОстаток)
|         И (ЛЗКМатериалы.Сумма = ОстаткиМатериаловОстатки.СуммаОстаток)";

   ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
   
   СтрокаТабличнойЧасти=ЭлементыФормы.Материалы.ТекущиеДанные;
   СтрокаТабличнойЧасти.ЕдИзмерения=СтрокаТабличнойЧасти.Номенклатура.ЕдиницаИзмерения;
   
   СтрокаТабличнойЧасти.Цена = ВыборкаРезультатаЗапроса.СуммаОстаток/ВыборкаРезультатаЗапроса.КоличествоОстаток;
КонецПроцедуры

Сама конфа во вложении. Может кому пригодиться.

szhutov

Забыл сказать - конфигурация самописная на платформе 8.1.
При выборе номенклатуры, в ФОРМЕ ВЫБОРА справочника "Номенклатура" все остатки видны и цена расчитывается. А как все это запихать в ЛЗК?

Rasty

Запрос.Текст =
   "ВЫБРАТЬ
   |   ОстаткиМатериаловОстатки.СуммаОстаток / ОстаткиМатериаловОстатки.КоличествоОстаток КАК Цена
   |ИЗ
   |   РегистрНакопления.ОстаткиМатериалов.Остатки КАК ОстаткиМатериаловОстатки
   |ГДЕ
   |   ОстаткиМатериаловОстатки.Материал = &Номенклатура";

   Запрос.УстановитьПараметр("Номенклатура", ЭлементыФормы.Материалы.ТекущиеДанные.Номенклатура);
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

szhutov

Процедура МатериалыНоменклатураПриИзменении(Элемент)
    Запрос = Новый Запрос;   
   Запрос.Текст =
   "ВЫБРАТЬ
   |   ОстаткиМатериаловОстатки.СуммаОстаток / ОстаткиМатериаловОстатки.КоличествоОстаток КАК Цена
   |ИЗ
   |   РегистрНакопления.ОстаткиМатериалов.Остатки КАК ОстаткиМатериаловОстатки
   |ГДЕ
   |   ОстаткиМатериаловОстатки.Материал = &Номенклатура";

   Запрос.УстановитьПараметр("Номенклатура", ЭлементыФормы.Материалы.ТекущиеДанные.Номенклатура);
   

   ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
   
   СтрокаТабличнойЧасти=ЭлементыФормы.Материалы.ТекущиеДанные;
   СтрокаТабличнойЧасти.ЕдИзмерения=СтрокаТабличнойЧасти.Номенклатура.ЕдиницаИзмерения;
   
   СтрокаТабличнойЧасти.Цена = ВыборкаРезультатаЗапроса.Цена;

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

Единица измерения заполняется автоматом(берется из справочника "Номенклатура"), а цена никак не хочет.

Rasty

а что в выборкарезультатзапроса?
Добавлено: 10 мая 2016, 11:04


аааа ну точно, нужно сделать так
Если ВыборкаРезультатЗапроса.Следующий() Тогда
    СтрокаТабличнойЧасти.Цена = ВыборкаРезультатаЗапроса.Цена;
Иначе
    Сообщить("Сообщение какое-нибудь");
КонецЕсли;
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

szhutov

Я так понимаю цены по всем позициям номенклатуры из регистра накопления "Остатки материалов" сопоставленные с номенклатурой из справочника "Номенклатура".

(Дело в том, что программа досталась от предшественника, сам я только начинаю вникать в 1с, (работал в С++), хочется доработать программку)

Rasty

Вообще цены должны храниться в регистре сведений, а остатки в регистре накопления
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

szhutov

Все получилось! Огромное СПАСИБО! Удачи!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск