Как обратиться к документу в 1с
Надо сделать печатную форму у документа который вводится на основании,но данные в печатной форме будут браться из документа,который является основанием
надо хранить ссылку на документ основание
См. «Счет-Фактура выданный»
1- как хранить ссылку?
(3) иметь реквизит, в который при создании документа на основании будет заноситься ссылка на документ-основание. уф.
(3) В реквизите.
Процедура ОбработкаЗаполнения(Основание)
Если ТипЗнч(Основание) = Тип(«ДокументСсылка.Расходная») Тогда
// Заполнение шапки
ДокОснование=Основание.Ссылка;
Покупатель = Основание.Контрагент;
Контакт=покупатель.КонтактноеЛицо;
КонтТелефон=покупатель.КонтТелефон;
КонецЕсли;
КонецПроцедуры
Для Каждого ТекСтрока из ДокОснование.Товар цикл
ТабОбл.Параметры.Товар=ДокОснование.Товар.номеклатура;
ТабОбл.Параметры.кол=ДокОснование.Товар.кол;
КонецЦикла;
Обратиться к документу из модуля объекта

Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.
Реклама
Новые вакансии
- Вакансия аналитика 1с УТ от 200K, гибрид от Татьяна Астахова
25 января 2024 г. - Вакансия Программист 1С (Москва, гибрид) 250-300т.р. от paulaja03@gmail.com
23 января 2024 г. - Вакансия программиста 1с от Татьяна Астахова
19 января 2024 г.
Шаблон кода: Как в 1С обратиться к элементу формы
Для того чтобы обратиться к элементу формы из модуля объекта этой формы и передать значение в переменную:
Шаблон кода:
мМойДокумент = ЭтотОбъект.Ссылка.ПолучитьФорму(«ФормаДокумента»); // получаем форму документа
НашаПеременная = мМойДокумент.ЭлементыФормы.Дата.Значение; // передаем значение переменной
Для того чтобы обратиться к элементу формы из модуля формы документа:
Шаблон кода:
УПРАВЛЯЕМЫЕ ФОРМЫ
Для того чтобы обратиться к элементу формы из модуля формы документа:
Для того чтобы программно установить значение поля в табличной части документа в :
В данном случае при изменении поля ТекущаяДата происходит автозаполнение поля ОстатокОплаченыхДней.
Еще один пример — заполнение полей табличной части формы при начале редактирования:
Процедура ТабличнаяЧасть1ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущаяДата = Формат (ТекущаяДата (), «ДФ=dd.MM.yyyy» );
Если НоваяСтрока И Не Копирование Тогда
Элемент.ТекущиеДанные.ТекущаяДата = ТекущаяДата;
Элемент.ТекущиеДанные.Комментарий = «наш комментарий»;
КонецЕсли;
КонецПроцедуры
Для того чтобы записать какие-то данные в поле управляемой формы нужно создать прямо на форме элемент (реквизит создавать не нужно), например, поле ввода и прописать для него, например, результат функции в модуле формы:
Процедура ПриОткрытии(Отказ)
Реквизит1 = ПодсчетИтогаКассы();
КонецПроцедуры
1C обратиться к документу-основанию для вывода печатной формы
Нужно в печатной форме документа вывести данные из табличной части документа основания. Подскажите, как правильно сделать запрос к данным документа основания для вывода их на печать? Написала данный код, но он не работает. Пишет поле товары не найдено (а в док-те основании оно точно есть)
Процедура Печать(ТабДок, Ссылка) Экспорт //> КонецПроцедуры
Отслеживать
задан 30 дек 2016 в 18:32
103 3 3 серебряных знака 15 15 бронзовых знаков
Мне кажется в коде явно нарушена логика. Сложно сказать, не видя весь код. Например, что содержится в переменной «Выборка» и где определяется переменная «Ссылка».
30 дек 2016 в 21:04
@ Ella Svetlaya поместила весь код. В запросе 2 пытаюсь получить данные из документа основания. Вообще ничего не выводит, выдает ошибку
31 дек 2016 в 16:52
Опишите какая конфигурация используется, где в каком реквизите хранится документ основания, какой документ является первичным. Второй запрос у вас неверный — должен быть таким ВЫБРАТЬ * |ИЗ | Документ.РеализацияТоваров1.Товары КАК РеализацияТоваров1 |ГДЕ | РеализацияТоваров1.Ссылка = &ДокументОснование
31 дек 2016 в 18:38
@ivansoft Всего вторую неделю пытаюсь разобраться в 1с с нуля, так что извините за глупые вопросы. Я думала, что когда документ создаем на основании другого, в нем автоматом должна появляться ссылка на док.основание. Это не так?Я должна создать реквизит, где прописать ссылку на док.основание?
1 янв 2017 в 14:41
@ivansoft внесла изменение в код, как вы написали. Выдает ошибку: «: Ошибка при вызове метода контекста (Выполнить) Выборка2 = Запрос2.Выполнить().Выбрать(); по причине: <(13, 28)>: Не задано значение параметра «ДокументОснование» РеализацияТоваров1.Ссылка=>&ДокументОснование»Документ.ЗаявкаНаДоставку.МодульМенеджера(46)>
1 янв 2017 в 14:44
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Несколько замечаний по коду:
- ЗаявкаНаДоставку.Ссылка В (&Ссылка) — бессмысленно использовать В, если в параметре — один документ. ЗаявкаНаДоставку.Ссылка = &Ссылка.
- Во втором запросе нет параметра Ссылка, а он зачем-то устанавливается. Зато не устанавливается нужный параметр ДокументОснование.
- Старайтесь все данные, которые нужно получить, получать в одном запросе. Если у Вас совсем разные данные в запросах — делайте несколько, но в пакетном запросе. Это повышает быстродействие за счёт уменьшения количества обращений к базе данных.
- Ответ на ваш комментарий — да, чтобы документ-основание был у другого документа, нужно создать реквизит в этом документе и вам нужно самостоятельно в коде позаботиться о том, чтобы этот реквизит заполнялся.
- Без полного описания того, что вы хотите, сложно вам помочь. Какие данные должны получаться из документа, а какие — из его основания? Какая между ними взаимосвязь? Общая схема запроса примерно отвечающего вашим условиям:
ВЫБРАТЬ ВозвратДенег.Ссылка КАК ДокументВозвратДенег, ВозвратДенег.Валюта КАК Валюта, ВозвратДенег.Контрагент КАК Контрагент, ВозвратДенег.Дата, ДенежныеРасходыРасходы.СтатьяРасходов, ДенежныеРасходыРасходы.Сумма, ДенежныеРасходыРасходы.Ссылка КАК ДокументДенежныеРасходы ИЗ Документ.ВозвратДенег КАК ВозвратДенег ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДенежныеРасходы.Расходы КАК ДенежныеРасходыРасходы ПО ВозвратДенег.ДокументОснование = ДенежныеРасходыРасходы.Ссылка ИТОГИ МАКСИМУМ(Валюта), МАКСИМУМ(Контрагент) ПО ДокументВозвратДенег
Пояснения — ВозвратДенег здесь — это документ, а ДенежныеРасходы — это основание. Ссылка на основание хранится в реквизите ДокументОснование — вы видите это в условии связи. Итоги здесь для того, чтобы получить двухуровневое дерево — на верхнем уровне будет документ ВозвратДенег и его реквизиты. Обратите внимание — все его реквизиты указаны в разделе ИТОГИ. Это для того, чтобы они выводились на верхнем уровне. Остальные реквизиты — реквизиты документа-основания, будут находиться на втором уровне дерева. Обход делается так:
РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументВозвратДенег = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДокументВозвратДенег.Следующий() Цикл // Вставить обработку выборки ВыборкаДокументВозвратДенег ВыборкаДетальныеЗаписи = ВыборкаДокументВозвратДенег.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи КонецЦикла; КонецЦикла;