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

Автоматическое заполнение полей ТЧ документа

Автор Йоха, 22 авг 2025, 06:37

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

Йоха

Коллеги, приветствую.

Пишу конфигурацию с нуля под свои скромные задачи. 1С.Предприятие. Управляемая.
Продолжение предыдущей темы

Есть документ РасходТовара, добавляя новую товарную позицию в ТЧ добавляется только наименование товара. Помимо наименования также необходимо, чтобы автоматически добавлялся серийный номер (СН) и цена на товар.
У Справочник.Товары есть отдельная форма выбора, к ней обращается документ РасходТовара при нажатии "Добавить" или "Выбрать" + дополнен запрос для отображения информации из РегистраНакопления.
ВЫБРАТЬ
ТоварНаОстаткахОстатки.СН,
ТоварНаОстаткахОстатки.ОстатокОстаток КАК Остаток,
Товары.Наименование
ИЗ
Справочник.Товары КАК Товары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварНаОстатках.Остатки КАК ТоварНаОстаткахОстатки
ПО Товары.Ссылка = ТоварНаОстаткахОстатки.Товар
ГДЕ
НЕ ТоварНаОстаткахОстатки.ОстатокОстаток = 0

Добавлю необходимую информацию, если этого недостаточно для понимания.
Благодарю.

sali

добавьте строку после выполнения запроса
заполнитьзначение(выборкаиззапроса, реквизитытч)
так все сразу заполняется и не нужно писать
строкатч.номенклатура = выборка.наименование;
строкатч.остаток = выборка.остаток; и так далее

alexandr_ll

Йоха, Что такое Серийный номер и цена на товар? Это данные из регистра сведений или реквизиты справочника товар?

Йоха

alexandr_ll, Серийный номер - измерение в Регистре Накоплений, цена на товар - ресурс в Регистре Накоплений.

alexandr_ll

Йоха, Почему в регистре накоплений? Что вы по ним накапливаете? Обычно для таких показателей используют периодические регистры сведений.
Из регистров данные получают запросом либо методами регистра.
То есть в модуле формы нужно создать на сервере функции с параметром "Товар"
и вернуть нужное значение регистра.

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


КонецФункции
Это конечно пример, нужно подставить свои значения

Йоха

Цитата: sali от 22 авг 2025, 08:10заполнитьзначение(выборкаиззапроса, реквизитытч)
Гуглю этот метод как применить.

Йоха

Цитата: alexandr_ll от 22 авг 2025, 09:54Почему в регистре накоплений? Что вы по ним накапливаете?
Использую РегистрНакопления, так как собираю остатки товара, суммовой оборот и СН к каждой позиции.

Теги:

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

Рейтинг@Mail.ru

Поиск