Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Автозаполнение из табличной части справочника в табличную часть документа

Здравствуйте , помогите пожалуйста с кодом
Мне нужно чтобы автоматически заполнялась табличная часть документа из табличной части справочника.
При заполнении документа , автоматически заполнялось ОстановкиМаршрута на 2 скрине.
Из справочника "Маршруты" в ней табличная часть "ОстановкиМаршрута" в "Документ1" в форму элемента "ОстановкиМаршрута"
Ответ: А если ТЧ справочника изменится, нужно ли менять ТЧ документа?

Добавлено через 3 минуты
Так нужно заполнять табличную часть документа? Или выводит список остановок при позиционировании на строке документа?
Вопрос: 1с 8.3 Вывод картинок в табличной части документа

Имеется документ с табличной частью, с реквизитом Номенклатура (тип СправочникСсылка.Номенклатура ). Нужно при изменении Номенклатуры выводить соответствующую картинку из справочника.

Есть одна особенность картинки хранятся в отдельном справочнике ФотоБанк с реквизитом Фото (тип ХранилищеЗначения). На который и ссылается реквизит Изображение справочника Номенклатура.
(Добавление картинки в Справочник было рассмотрено в этой теме: )

Подскажите, пожалуйста, как все же реализовать вывод картинок в табличной части документа.
Ответ: После долгих мучений, картинка выводиться в табличную часть документа, но очень маленькая. А если в конфигураторе поменять высоту колонки, то картинка выводиться в ее реальном размере (но выходит со стороки - см. скрин 2), хотя стоит в свойстве АвтоРазмер. Как это исправить? И какое свойство надо изменить, чтобы картинка была по центру ячейки?
1C
1
2
3
4
5
6
7
8
9
10
11
12
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
    СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
    Номенклатура = СтрокаТабличнойЧасти.Номенклатура;   
    СтрокаТабличнойЧасти.АдресФото = ПолучитьСсылкуКартинки(Номенклатура);
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьСсылкуКартинки(Ссылка)
     АдресФото = ПолучитьНавигационнуюСсылку(Ссылка.Изображение,"Фото");
     Возврат АдресФото;
КонецФункции
Вопрос: Заполнить количество в табличной части документа

Доброго времени суток.
  • Задача - заполнить табличную часть документа "Акт списания ЕГАИС" (далее - док) из данных таблицы значений (далее - ТЗ).
  • Проблема - не заполняется столбец "Количество" (остальные заполняются).
В ТЗ для колонки Количество прописано ОписаниеТипов с квалификаторами числа: длина 15, точность 3. Параметры совпадает с этими же параметрами колонки Количество дока, на отладке у значений колонки Количество в ТЗ эти параметры присутствуют.

ТЗ заполняется по данным документа "остатки ЕГАИС" (далее - док2). В док2 параметры колонки "Количество": длина 10, точность 0. Грешу на то, что количества попадают в ТЗ изначально без дробной части.

Функция, переводящая табличную часть док2 в ТЗ:
Код:
функция получитьТЧвТЗ(доп,тч)
    кч=новый квалификаторыЧисла(15,3);
    типЧ=новый описаниеТипов("число",кч);
   
    т="
    |выбрать алкогольнаяПродукция ап,
        |количество колво
        |поместить вт из &тч как тч;
    |выбрать н.номенклатура ном, вт.колво колво, вт.ап
    |из вт левое соединение
        |регистрСведений.соответствиеНоменклатурыЕГАИС н
        |по вт.ап=н.алкогольнаяПродукция где колво"+доп;
    з=новый запрос;
    м=новый МенеджерВременныхТаблиц;
    з.МенеджерВременныхТаблиц=м;
    з.Текст=т;
    з.УстановитьПараметр("тч",тч);
    в=з.Выполнить().выбрать();
   
    ы=новый таблицаЗначений;
    ы.Колонки.Добавить("ап");
    ы.Колонки.Добавить("колво", типЧ);
    ы.Колонки.добавить("ном");
   
    пока в.Следующий() цикл
        стр=ы.Добавить();
        стр.ап=в.ап;
        стр.колво=в.колво;
        стр.ном=в.ном;
    КонецЦикла;
       
    возврат ы;
КонецФункции
процедура, заполняющая табличную часть результирующего документа:
Код:
&НаСервере
Процедура создатьАктСписанияНаСервере()
    докТЧ=получитьДокТЧ();   
    тзб=получитьТЧвТЗ(">0",докТЧ);   
   
    докСписания=документы.АктСписанияЕГАИС.СоздатьДокумент();   
    докСписания.Дата=ТекущаяДата();
    докСписания.ПричинаСписания=перечисления.ПричиныСписанийЕГАИС.Недостача;
    докСписания.Магазин=справочники.Магазины.НайтиПоНаименованию(магазин);
    докСписания.склад=справочники.склады.НайтиПоНаименованию(склад);
    докСписания.организация=справочники.организации.НайтиПоНаименованию(организация);
   
    для каждого стр из тзб цикл
        с=докСписания.Товары.Добавить();
        с.Номенклатура=стр.ном;
        с.Количество=стр.колво;
        с.АлкогольнаяПродукция=стр.ап;
    КонецЦикла;
   
    докСписания.Записать(РежимЗаписиДокумента.Запись);
КонецПроцедуры
--- Объединение сообщений, 29 дек 2016 ---
ЗЫ: при этом в отладке вот тут
Код:
для каждого стр из тзб цикл
        с=докСписания.Товары.Добавить();
        с.Номенклатура=стр.ном;
        с.Количество=стр.колво;
        с.АлкогольнаяПродукция=стр.ап;
    КонецЦикла;
Нужное количество заполняется, но без нулей в дробной части:
Ответ:
ВЗЛЕТЕЛО!!!! ааа, вот радость-то! оказалось, в документе-результате колонка с количествами называется не Количество, а КоличествоУпаковок.
Код:
 
для каждого стр из тзб цикл
        с=докСписания.Товары.Добавить();
        с.Номенклатура=стр.ном;
        с.КоличествоУпаковок=стр.колво;//с.Количество - неправильно
        с.АлкогольнаяПродукция=стр.ап;
   КонецЦикла;
день прожит не зря
Вопрос: Условие на номенклатуру из табличной части документа в запросе 1с 77

Всем доброго дня!! Делаю отчет в 7ке - вывожу данные из документов (из шапки), и нужно условие - на номенклатуру из табличной части, подскажите синтаксис, заранее благодарю.
Ответ: Mixmaister666,

Если вам нужны агрегатные функции по реквизитам шапки, то не взлетит.
7ка, если в запросе у вас участвуют реквизиты табличной части, делает запрос к таблице табличной части документа с джойном к таблице шапки. Реквизиты шапки будут дублировать в каждой строке. Если в запросе нет агрегатной функции по реквизиту шапки - всё нормально, результат запроса свернётся по группировкам. Если есть, по каждому такому реквизиту шапки значение помножится на количество строк в документе.
Вопрос: В отчете не получается перебрать строки табличной части документа

В отчете не получается перебрать строки табличной части документа
В запросе обращаюсь к регистру сведений ДанныеКлиента.
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеКлиента.Период,
| ДанныеКлиента.Контрагент,
| ДанныеКлиента.Регистратор как регистратор1

|ИЗ
| РегистрСведений.ДанныеКлиента КАК ДанныеКлиента";

результат= Запрос.Выполнить();
Выборка = результат.Выбрать();
пока Выборка.следующий() цикл
тч=Выборка.Регистратор1.ПолучитьОбъект();
// ТМЦ - это табличная часть в документе, который является регистратором движения
Для каждого строка из ТЧ.тмц цикл
тов=ТЧ.товар;
конецЦикла;

Пишет "Поле объекта не обнаружено Товар", хотя там есть такое поле
Ответ:
Зачем так сложно?
У Вас же все регистраторы уже выбраны запросом. Только проверьте, является ли регистратор документом Заказ, и все, должен работать первый вариант обхода результатов.
Вопрос: Загрузка в табличную часть документа данных из DBF-файла

Здравствуйте!

Нужно вывести данные в табличную часть документа "ДоговорНаПоставкуГаза" из DBF-файла.
Имеются реквизиты в табличной части "Реестр": ЛицевойСчет, ФИО, ПочтовыйИндекс, УчастокОбслуживания, НаселенныйПункт, Улица, НомерДома, НомерКвартиры,  НомерКомнаты, ДатаЗаключенияДоговораНаПоставкуГаза, НомерДоговораНаПоставкуГаза, ДатаВыдачиДоговораНаРуки, НомерМобильногоТелефона, НомерДомашнегоТелефона, КодАдресаПоФИАС.

Сама база данных просчитывается с помощью подобного кода по нажатию кнопки "Загрузить":

Процедура ДействияФормыВыгрузить(Кнопка)
Таблица = Новый XBase;
    Таблица.ОткрытьФайл( 
        "D:\dogovor\выгрузка\281117.dbf",// путь к базе

        ,// путь к индексу

        Истина// только чтение

    );
 
    Сообщить("В таблице " + Таблица.КоличествоЗаписей() + " записей.");
    Сообщить("Таблица имеет кодировку: " + Таблица.Кодировка);
 
    Таблица.Первая();// перешли к первой записи

    Пока Не Таблица.ВКонце() Цикл
        Если Не Таблица.ЗаписьУдалена() Тогда
            Сообщить(
                Строка(Таблица.LS) + " " +
                Таблица.FIO + " " + 
                Таблица.INDEX + " " +
                Таблица.RAION + " " +
                Таблица.NASPUNKT + " " +
                Таблица.UL + " " +
                Таблица.DOM + " " +
                Таблица.KV + " " +
                Таблица.KOMNATA + " " +
                Таблица.DDOG + " " +
                Таблица.NDOG + " " +
                Таблица.DVID + " " +
                Таблица.T_SOT + " " +
                Таблица.T_DOM + " " +
                Таблица.KOD            
            );
        КонецЕсли;
        Таблица.Следующая();// переходим к следующей записи

            
            КонецЦикла;    

    Таблица.ЗакрытьФайл();

КонецПроцедуры
Ответ: Всё, получилось! Я решил проблему путём удаления старой формы документа и создания новой.
Вопрос: С помощью запроса получить элементы табличной части документа-регистратора

Собственно вопрос в теме: Как с помощью запроса получить элементы табличной части документа-регистратора из вирт. таблицы регистра Бухгалтерии?
ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Счет,
    ХозрасчетныйОстаткиИОбороты.Подразделение,
    ХозрасчетныйОстаткиИОбороты.Субконто2,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    ХозрасчетныйОстаткиИОбороты.ПериодСекунда,
    ХозрасчетныйОстаткиИОбороты.Регистратор,
    АвансовыйОтчетТовары.Номенклатура
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Авто, , , , ) КАК ХозрасчетныйОстаткиИОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары
        ПО ХозрасчетныйОстаткиИОбороты.Регистратор = АвансовыйОтчетТовары.Ссылка
ГДЕ
    ХозрасчетныйОстаткиИОбороты.Счет.Ссылка В ИЕРАРХИИ(&Счет)

АвансовыйОтчетТовары - искомая Таб.Часть документа АвансовыйОтчет. При выгрузке результат - NULL. В чем косяк?
Ответ: () Как этот трэш учитывает ручные корректировки движений документа и операции введенные вручную?
Вопрос: Групповая обработка табличных частей документов.

Кто-нибудь сталкивался с такой обработкой. Допустим мне в данный момент в табличную часть документа отчеторозничныхпродажах нужно внести счет учета 41.02 по всем документам за определённый период. Формы неуправляемые. Понятно, что можно для данного случая быстро настрочить. Но такие ситуации временами происходят. И хотелось бы иметь под рукой какой-нибудь универсальный инструмент.
Ответ: хм, я у себя набором "ИР" справился
внедренцы когда пилили обмен - в доп.тч документа внесли записи с допинфой по всем товароам, даже если нет допинфы... спустыми значениями... пришлось подпрограммливать и чистить накачанное
Вопрос: Как добавить табличную часть документа в условие отбора?

Всем доброго времени суток!
Как добавить табличную часть документа в условие отбора?
Есть один документ в котором 12 табличных частей (12 месяцев) необходимо сформировать отчет по выбранному месяцу (по выбранной табличной части)

Так выбираю все, с фильтром Организация, Подразделение
Кликните здесь для просмотра всего текста
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
ВЫБРАТЬ
Январь.Ссылка.Организация КАК Организация,
Январь.Ссылка.Подразделение КАК Подразделение,
Январь.ТоварИмя КАК Товар,
Январь.Необходимо КАК Необходимо1,
Январь.Приобретено КАК Приобретено1,
Январь.Ожидается КАК Ожидается1,
Январь.Перевыполнено КАК Перевыполнено1,
Январь.Расход КАК Расход1
ПОМЕСТИТЬ ВТ
ИЗ Документ.ПланЗакупок.Январь КАК Январь
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Февраль.Ссылка.Организация КАК Организация,
Февраль.Ссылка.Подразделение КАК Подразделение,
Февраль.ТоварИмя,
Февраль.Необходимо,
Февраль.Приобретено,
Февраль.Ожидается,
Февраль.Перевыполнено,
Февраль.Расход
ИЗ Документ.ПланЗакупок.Февраль КАК Февраль
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Март.Ссылка.Организация КАК Организация,
Март.Ссылка.Подразделение КАК Подразделение,
Март.ТоварИмя,
Март.Необходимо,
Март.Приобретено,
Март.Ожидается,
Март.Перевыполнено,
Март.Расход
ИЗ Документ.ПланЗакупок.Март КАК Март
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Апрель.Ссылка.Организация КАК Организация,
Апрель.Ссылка.Подразделение КАК Подразделение,
Апрель.ТоварИмя,
Апрель.Необходимо,
Апрель.Приобретено,
Апрель.Ожидается,
Апрель.Перевыполнено,
Апрель.Расход
ИЗ Документ.ПланЗакупок.Апрель КАК Апрель
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Май.Ссылка.Организация КАК Организация,
Май.Ссылка.Подразделение КАК Подразделение,
Май.ТоварИмя,
Май.Необходимо,
Май.Приобретено,
Май.Ожидается,
Май.Перевыполнено,
Май.Расход
ИЗ Документ.ПланЗакупок.Май КАК Май
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Июнь.Ссылка.Организация КАК Организация,
Июнь.Ссылка.Подразделение КАК Подразделение,
Июнь.ТоварИмя,
Июнь.Необходимо,
Июнь.Приобретено,
Июнь.Ожидается,
Июнь.Перевыполнено,
Июнь.Расход
ИЗ Документ.ПланЗакупок.Июнь КАК Июнь
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Июль.Ссылка.Организация КАК Организация,
Июль.Ссылка.Подразделение КАК Подразделение,
Июль.ТоварИмя,
Июль.Необходимо,
Июль.Приобретено,
Июль.Ожидается,
Июль.Перевыполнено,
Июль.Расход
ИЗ Документ.ПланЗакупок.Июль КАК Июль
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Август.Ссылка.Организация КАК Организация,
Август.Ссылка.Подразделение КАК Подразделение,
Август.ТоварИмя,
Август.Необходимо,
Август.Приобретено,
Август.Ожидается,
Август.Перевыполнено,
Август.Расход
ИЗ Документ.ПланЗакупок.Август КАК Август
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Сентябрь.Ссылка.Организация КАК Организация,
Сентябрь.Ссылка.Подразделение КАК Подразделение,
Сентябрь.ТоварИмя,
Сентябрь.Необходимо,
Сентябрь.Приобретено,
Сентябрь.Ожидается,
Сентябрь.Перевыполнено,
Сентябрь.Расход
ИЗ Документ.ПланЗакупок.Сентябрь КАК Сентябрь
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Октябрь.Ссылка.Организация КАК Организация,
Октябрь.Ссылка.Подразделение КАК Подразделение,
Октябрь.ТоварИмя,
Октябрь.Необходимо,
Октябрь.Приобретено,
Октябрь.Ожидается,
Октябрь.Перевыполнено,
Октябрь.Расход
ИЗ Документ.ПланЗакупок.Октябрь КАК Октябрь
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Ноябрь.Ссылка.Организация КАК Организация,
Ноябрь.Ссылка.Подразделение КАК Подразделение,
Ноябрь.ТоварИмя,
Ноябрь.Необходимо,
Ноябрь.Приобретено,
Ноябрь.Ожидается,
Ноябрь.Перевыполнено,
Ноябрь.Расход
ИЗ Документ.ПланЗакупок.Ноябрь КАК Ноябрь
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Декабрь.Ссылка.Организация КАК Организация,
Декабрь.Ссылка.Подразделение КАК Подразделение,
Декабрь.ТоварИмя,
Декабрь.Необходимо,
Декабрь.Приобретено,
Декабрь.Ожидается,
Декабрь.Перевыполнено,
Декабрь.Расход
ИЗ Документ.ПланЗакупок.Декабрь КАК Декабрь
;
ВЫБРАТЬ 
ВТ.Организация КАК СуммарноПоОрганизации, ВТ.Подразделение, ВТ.Товар, СУММА(ВТ.Необходимо1) КАК Необходимо, СУММА(ВТ.Приобретено1) КАК Приобретено, СУММА(ВТ.Ожидается1) КАК Ожидается, СУММА(ВТ.Перевыполнено1) КАК Перевыполнено, СУММА(ВТ.Расход1) КАК Расход ИЗ ВТ КАК ВТ СГРУППИРОВАТЬ ПО ВТ.Организация, ВТ.Подразделение, ВТ.Товар
Ответ:
Сообщение от Dethmontt
какая в .опу разница?
да ты прав, -
никакой разницы
Вопрос: Связывание двух табличных частей документа

Необходимо при нажатии на строчку первой табличной части, получать соответствующие данные во второй табличной части. Использовался код ниже, но тогда, при добавлении новой строки в во второй табличной части, она относится в первую табличную часть по номеру строки. Как переделать код, может надо создать какие нибудь дополнительные поля в обе табличные части?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаКлиенте
Процедура ТабличнаяЧастьПриАктивизацииСтроки(Элемент)
    ТекДанные = Элементы.ТабличнаяЧасть.ТекущиеДанные;
 
    Если ТекДанные <> Неопределено Тогда
        УстановитьОтборВТабличнаяЧасть1(ТекДанные.НомерСтроки);
    КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьОтборВТабличнаяЧасть1(НомерСтроки)
       ТекДанные1 = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
    
 
    Отбор = Новый ФиксированнаяСтруктура("НомерСтроки", НомерСтроки);
    Элементы.ТабличнаяЧасть1.ОтборСтрок = Отбор;
КонецПроцедуры
Ответ:
Сообщение от valexab
А какое поле, например?
Например. Добавить реквизит "Реквизит1" в обе табличные части с типом УникальныйИдентификатор, и обеспечить одинаковое значение этих полей для связанных строк.