Как обратиться к документу в 1с
Перейти к содержимому

Как обратиться к документу в 1с

  • автор:

Как обратиться к документу в 1с

Надо сделать печатную форму у документа который вводится на основании,но данные в печатной форме будут браться из документа,который является основанием

надо хранить ссылку на документ основание
См. «Счет-Фактура выданный»
1- как хранить ссылку?

(3) иметь реквизит, в который при создании документа на основании будет заноситься ссылка на документ-основание. уф.

(3) В реквизите.

Процедура ОбработкаЗаполнения(Основание)
Если ТипЗнч(Основание) = Тип(«ДокументСсылка.Расходная») Тогда
// Заполнение шапки
ДокОснование=Основание.Ссылка;
Покупатель = Основание.Контрагент;
Контакт=покупатель.КонтактноеЛицо;
КонтТелефон=покупатель.КонтТелефон;
КонецЕсли;
КонецПроцедуры

Для Каждого ТекСтрока из ДокОснование.Товар цикл
ТабОбл.Параметры.Товар=ДокОснование.Товар.номеклатура;
ТабОбл.Параметры.кол=ДокОснование.Товар.кол;
КонецЦикла;

Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn

Обратиться к документу из модуля объекта

35477

Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.

Реклама

Новые вакансии

  • Вакансии — Извлечение данных 1С — Отчетность XBRL от Alexander Kub
    Вчера в 16:54
  • Вакансия Аналитик 1С от Татьяна Ред
    7 марта 2024 г.
  • Программист 1С (удаленно) от pavelvoronin
    5 марта 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.Ссылка=>&ДокументОснование»

1 янв 2017 в 14:44

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Несколько замечаний по коду:

  1. ЗаявкаНаДоставку.Ссылка В (&Ссылка) — бессмысленно использовать В, если в параметре — один документ. ЗаявкаНаДоставку.Ссылка = &Ссылка.
  2. Во втором запросе нет параметра Ссылка, а он зачем-то устанавливается. Зато не устанавливается нужный параметр ДокументОснование.
  3. Старайтесь все данные, которые нужно получить, получать в одном запросе. Если у Вас совсем разные данные в запросах — делайте несколько, но в пакетном запросе. Это повышает быстродействие за счёт уменьшения количества обращений к базе данных.
  4. Ответ на ваш комментарий — да, чтобы документ-основание был у другого документа, нужно создать реквизит в этом документе и вам нужно самостоятельно в коде позаботиться о том, чтобы этот реквизит заполнялся.
  5. Без полного описания того, что вы хотите, сложно вам помочь. Какие данные должны получаться из документа, а какие — из его основания? Какая между ними взаимосвязь? Общая схема запроса примерно отвечающего вашим условиям:

ВЫБРАТЬ ВозвратДенег.Ссылка КАК ДокументВозвратДенег, ВозвратДенег.Валюта КАК Валюта, ВозвратДенег.Контрагент КАК Контрагент, ВозвратДенег.Дата, ДенежныеРасходыРасходы.СтатьяРасходов, ДенежныеРасходыРасходы.Сумма, ДенежныеРасходыРасходы.Ссылка КАК ДокументДенежныеРасходы ИЗ Документ.ВозвратДенег КАК ВозвратДенег ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДенежныеРасходы.Расходы КАК ДенежныеРасходыРасходы ПО ВозвратДенег.ДокументОснование = ДенежныеРасходыРасходы.Ссылка ИТОГИ МАКСИМУМ(Валюта), МАКСИМУМ(Контрагент) ПО ДокументВозвратДенег

Пояснения — ВозвратДенег здесь — это документ, а ДенежныеРасходы — это основание. Ссылка на основание хранится в реквизите ДокументОснование — вы видите это в условии связи. Итоги здесь для того, чтобы получить двухуровневое дерево — на верхнем уровне будет документ ВозвратДенег и его реквизиты. Обратите внимание — все его реквизиты указаны в разделе ИТОГИ. Это для того, чтобы они выводились на верхнем уровне. Остальные реквизиты — реквизиты документа-основания, будут находиться на втором уровне дерева. Обход делается так:

РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументВозвратДенег = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДокументВозвратДенег.Следующий() Цикл // Вставить обработку выборки ВыборкаДокументВозвратДенег ВыборкаДетальныеЗаписи = ВыборкаДокументВозвратДенег.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи КонецЦикла; КонецЦикла; 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *