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

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

Автор sas_255, 02 июн 2021, 20:29

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

sas_255

Добрый день.
Не могу понять как сделать автозаполнение табличной части документа.
Есть форма справочника оборудования. Есть отдельный справочник для хранения файлов к этому оборудованию (гарантийников и др.)
В форме есть кнопка Загрузить файл (Гарантийный талон) которая загружает и записывает файл в отдельный справочник, связывая этот файл с владельцем по полю СерийныйНомер.
В этой же форме есть табличная часть "Документы", вопрос состоит в том, как при загрузке документа сделать так, чтобы он отбирался по владельцу (ну это ясно с помощью отбора) и потом автоматически добавлялся в табличную часть.

Для загрузки файла написан код приведенный ниже:
&НаКлиенте
Процедура ЗагрузитьГарантийныйТалон(Команда)
ПолноеИмяФайла = "";
Если ПоместитьФайл( , , ПолноеИмяФайла, Истина) = Истина Тогда
Данные = Новый ДвоичныеДанные(ПолноеИмяФайла);
ЗаписатьФайл(ПолучитьИмяФайла(ПолноеИмяФайла), Данные);
КонецЕсли;
КонецПроцедуры


&НаСервере
Процедура ЗаписатьФайл(ИмяФайла, Данные)

НовыйФайл = Справочники.Файлы.СоздатьЭлемент();
НовыйФайл.Файл=Новый ХранилищеЗначения(Данные, Новый СжатиеДанных());
НовыйФайл.Наименование=ИмяФайла;
НовыйФайл.ИмяФайла=ИмяФайла;
НовыйФайл.ВладелецФайла=Объект.Ссылка;
НовыйФайл.Записать();

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



Функция ПолучитьИмяФайла(ПолныйПуть)
    ИсхСтрока = ПолныйПуть;
    Позиция = Найти(ИсхСтрока, "\");
    ПозицияКонечная = 0;
    Пока Позиция <> 0 Цикл
        ПозицияКонечная = ПозицияКонечная + Позиция;
        ИсхСтрока = Сред(ИсхСтрока, Позиция+1);
        Позиция = Найти(ИсхСтрока, "\");
    КонецЦикла;
    ИмяФайла = Сред(ПолныйПуть, ПозицияКонечная + 1);
    Возврат ИмяФайла;
КонецФункции


LexaK

может не надо автозаполнять?
(как вариант) сделайте ДинамическийСписок к справочнику Файлы, настройте отбор по владельцу,
вытащите его на форму, автоматом создадутся колонки.
в форме документа в событии ПриСоздании, устанавливаете параметр Владелец,
вот и все, тут даже программирования как такового особо нет
ответ Понравился? (в смысле пригодился?)

sas_255

Спасибо за ответ. Очень помогло.
Возможно подскажете еще вот по какому вопросу:
В этой же форме есть дата покупки оборудования, встал вопрос об автоматическом вычислении окончания срока гарантии.
Длительность гарантии в месяцах выбирается из справочника.
Что нужно сделать, чтобы поле окончание гарантийного срока само заполнялось при выборе длительности гарантии. (понятно что событие При изменении) тут больше вопрос о том, как прибавить к дате правильное количество времени, так как в разных месяцах разное количество дней. Все что я нашел в интернете сводится к умножению на минуты и часы, то есть: В одном дне: 24*60*60 = 86400 секунд. но в данном случае будет скорее всего некорректное отображение конечной даты.
Насколько я понимаю нужно к значению реквизита Дата покупки прибавить какое-то значение умноженное на количество месяцев гарантии, вот тут то и выявляется, что логично, что в одном месяце 30 дней а в другом 31, и соответственно конечная дата в итоге некорректна.

antoneus


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

Рейтинг@Mail.ru Rambler's Top100

Поиск