1с 7 получить документ

Обновлено: 05.07.2024

"1с 7.7<br>Есть документ в табличной части указаны цены.<br>как из внешней обработки установить Цена=Цена*коэфф и записать док?<br><br>Такой код:<br>Док1.ВыбратьСтроки();<br> Пока Док1.ПолучитьСтроку()=1 цикл<br> Ц1=Док1.ПолучитьАтрибут("Цена"); <br> Ц2=Ц1*Коэфф;<br> Док1.УстановитьАтрибут("Цена",Ц2);<br>КонецЦикла;<br><br>Не работает. Вернее работает но цена в документе не меняется(<br>"

в обработке есть ТЗ соответствующая ТЧ дока ?

можно расшифровать ТЗ и ТЧ?)

ТЗ - Таблица Значения в обработке<br>ТЧ - Табличная Часть документа

нет наверное. а как они выглядят?<br><br>там выше весь код. Док1 выбирается из реквизита диалога. и все.

показывай внешнюю обработку

"//*******************************************<br>//Док1 это поле ввода<br><br>Процедура Сформировать()<br> <br> Если ПустоеЗначение(Док1)=1 Тогда<br> Предупреждение("Документ не задан");<br> Возврат;<br> КонецЕсли;<br> <br> Если Док1.Проведен()=1 Тогда<br> Предупреждение("Документ проведен. Данная операция возможна только на непроведенном документе.");<br> Возврат;<br> КонецЕсли; <br> <br> Док1.ВыбратьСтроки();<br> Пока Док1.ПолучитьСтроку()=1 цикл<br> Ц1=Док1.ПолучитьАтрибут("Цена"); <br> Ц2=Ц1*Коэфф;<br> Док1.УстановитьАтрибут("Цена",Ц2);<br> КонецЦикла;<br><br>КонецПроцедуры<br><br><br>Коэфф=2<br>"

1. ужас, ничего не понял<br>2. почему проведенный нельзя изменять?<br>3. что такое Коэфф

1. а что не понятно ?<br>2. что бы случайно в проведенном доке не поменять цены.<br>3. коэфф это коэффициент на который надо изменить цену в документе по всем строкам.<br><br>ну короче в табличной части дока были <br>яблоки по 10 р<br>груши по 20 р<br>надо умножить на коэфф=2<br>получим<br>яблоки 20р<br>груши 40 р

"Процедура Сформировать()<br> <br> Если ПустоеЗначение(Док1)=1 Тогда<br> Предупреждение("Документ не задан");<br> Возврат;<br> КонецЕсли;<br> <br> Если Док1.Проведен()=1 Тогда<br> Предупреждение("Документ проведен. Данная операция возможна только на непроведенном документе.");<br> Возврат;<br> КонецЕсли;<br> <br> Док2 = СоздатьОбъект("Документ."+Док1.Вид());<br> Док2.НайтиДокумент(Док1.ТекущийДокумент());<br> <br> Док2.ВыбратьСтроки();<br>Пока Док2.ПолучитьСтроку()=1 цикл<br> Ц1=Док2.ПолучитьАтрибут("Цена");<br> Ц2=Ц1*Коэфф;<br> Док2.УстановитьАтрибут("Цена",Ц2);<br>КонецЦикла;<br> Док2.Записать();<br><br>//аплодисменты ! =)<br><br>КонецПроцедуры"

Electronic Software Distribution

смотрю функцию ПолучитьСписокРеквизитовСправочника и не совсем понимаю почему всегда добавляется "код" и "наименование" к списку возвращаемых реквизитов. разве "код" и "наименование" всегда присутствуют в справочнике?
хотя если учитывать п. (5), то отношение автора к моему минусу становится ясным. кстати, кому надо тот может и сам написать, а не дорабатывать. если здесь главное "идея", то изложи только идею, например:
"
// Возвращает список реквизитов справочника
// параметры: СпрВид - вид справочника
Функция ПолучитьСписокРеквизитовСправочника(знач СпрВид)
сзРеквизиты = СоздатьОбъект("СписокЗначений");
/////////////тута надо заполнить список значенией (сзРеквизиты) соответствующими
/////////////значениями метаданных относительно переданного параметра
Возврат сзРеквизиты;
КонецФункции
"

ибо самое главное в жизни это идеи, а их реализация - это дело десятое.

Abadonna прав - разработок использующих эту идею много
а вот "методических пособий" мало
сменил свое мнение - на практический пример с описанием не тянет

в типовых вроде подобное есть, в процедурах работы с контекстом документа,
в любом случае ни о чем.

если-бы это было в блогах, я-бы еще понял, но в "программах" - тянет на минус

Автор: чёта я не понял: вроде доброе дело сделал, а они минусами закидали. Мне что, теперь не делиться своими наработками? (11) Полезно читать документацию, например, als по метаданным от Пита. написанное эдак еще годков 8 назад(или раньше, не помню ужо), перед написанием своих нетленок. Всё ужо придумано до нас.
(11)>Мне что, теперь не делиться своими наработками?
Я тебе минус не ставил, но неужели ты на самом деле считаешь, что это НАРАБОТКА? Уж извиняйте, но просто не сдержался.
Идея? Обалдеть. Любой нормальный программер напишет для своих нужд такую "идею" уже через 2-а месяца изучения 1С. Давайте писать более конструктивно, например: в строке N возникает ошибка, код в строках N-NN можно было бы написать лучше. А докапываться до слов не надо, так как у каждого из нас разное воспитание и уровень снобизма тоже. И чего вы все так жестоко?
Согласен, что это баян, что даже если и размещать, то надо было не в разделе программ, а в блогах.
Но минусы то зачем ставить? за компанию? так уж тут заведено?
Если не видите ценности данной "обработки" - просто проигнорируйте, а минус надо ставить за не рабочий код.
Компенисрую. Справочник может иметь как код и наименование, как что-либо одно из них (код или наименование), так и ни кода ни наименования. Соответственно как говорится "Тема сисек не раскрыта". За это и минусовали

Просмотры 23574

Загрузки 137

Рейтинг 3

Создание 16.11.08 06:55

Обновление 16.11.08 06:56

№ Публикации 16755

Конфигурация Конфигурации 1cv7

Операционная система Не имеет значения

Страна Россия

Вид учета Не имеет значения

Доступ к файлу Абонемент ($m)

Код открыт Не указано

См. также

Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7 Промо

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

Распечатать

1С Предприятие что это?  11
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Ввод записей в журнал расчетов  1
Добавление записи в журнал расчетов: Метод Новая может быть вызван где угодно, в глобальном модуле, модуле обработок, документов и т.д. Данный метод проверяет корректность заполненных реквизитов журнала расчетов. При вводе новых записей журнал Выборка документа по номеру и вывод на Печать, в Табличный Документ  0
Процедура Печать() Если (ПустоеЗначение(ДатаНач)=1) или (ПустоеЗначение(ДатаКон)=1) Тогда Предупреждение(" Не задан период отчета" ); Возврат; КонецЕсли; Заг=" За период с " +ДатаНач+" по " +ДатаКон; Таб=СоздатьОбъект(" Таблица" ); Таб.Выв Выгрузка / Загрузка данных посредством XML файлов?  1
В основе работы с XML-файлами лежит технология доступа SAX, которая осуществляет считывание по одному тегу. Для этого существует два типа данных – ЗаписьXML и ЧтениеXML . Запись данных справочника в XML-файл: Запись = Новый ЗаписьXML; Запись.О Выгрузка метаданных конфигурации в Microsoft Word и Excel  1
Перем ОбъектыКонфы; Перем СтруктКонфы; Процедура ВыгрузитьВWord() Попытка Word = Новый COMОбъект(" Word.Application" ); Исключение Сообщить(" Не удалось открыть Word" ); Возврат; КонецПопытки; Word.Documents.Add(); Документ = Word.Activ Посмотреть все результаты поиска похожих

Еще в этой же категории

Получить список Справочников конфигурации  1
НаКлиенте Процедура ПоКнопкеЧтениеИзМетаданных(Команда) // Вставить содержимое обработчика. Перем СписокСправочников; СписокСправочников = Новый СписокЗначений; СписокСправочников = СправочникиИзМетаданных(); Для Сч = 0 По СписокСправочников Перебор Основных Реквизитов формы  0
//Перебор Основных Реквизитов формы Для Каждого Рек из ЭтаФорма.Метаданные().Реквизиты Цикл Сообщить(рек.Имя+" - " +рек.Синоним+" - " +Строка(рек.Тип)); КонецЦикла; // или так Для Каждого Рек из Метаданные().Реквизиты Цикл Сообщить(рек.Имя+" Функция устанавливает новое значение реквизита документа или справочника.  0
//функция устанавливает новое значение реквизита документа или справочника и задает вопрос, если новое значение не соответствует предыдущему Функция гЗначение(Ко,Атрибут,Значение) Экспорт Знач1=Ко.ПолучитьАтрибут(Атрибут); Знач2=Значение; //про Функция возвращает ссылку на заданный реквизит объекта метаданных Документ  0
// Документ - ссылка на документ, Реквизит - название реквизита, например " Контрагент" Функция гРеквизитДокумента(Документ,Реквизит) Экспорт Если Метаданные.Документ(Документ).РеквизитШапки(Реквизит).Выбран()=1 Тогда Возврат Метаданные.Докумен Как получить список реквизитов операции и проводок?  0
// Пример 1 Для к = 1 по Метаданные.РеквизитПроводки() Сообщить(Метаданные.РеквизитПроводки(к).Идентификатор); КонецЦикла; // Пример 2 СписокРеквизитов = СоздатьОбъект(" СписокЗначений" ); // реквизиты формы операции СписокРеквизитов. Посмотреть все в категории Метаданные

Добрый день в 1с 7.7. Все просто есть документ1(акт) На осноании документа1 сделан документ2(счет) через ввод на основании Вопрос как позиционируясь в цикле на документ2(на счет) получит документ1(акт) на основнии которого он был создан . Наоборот понятно через ВыбратьПодчиненныеДокументы , а пото как основание получить . спасибо

т.е стоя на документ2(счет) программно надо получить документ1 (акт)и из него инфу

вот у справочника есть атрибуты владелец ,родитель а как у дока документоснование получить

не то kobzon2 Счет=Создатьобъект("Документ.Счет"); Примерно Акт= Счет.ДокументОсновние но так не работает в 7.7 КонецЦикла

Счет.ДокументОсновние - так не работает уж не знаю с какого

"потому что не Документ, а Док" - не правда! - отладчик возьмите в руки.

+ если ДокОснование.Выбран, а Счет.ДокументОсновние - нет, без отладчика всё ясно

Я ему пример показал процедуры заполнения. Код у него рабочий. Если основание есть, то оно найдется. Если нет будет просто: Акт= Счет.ДокументОсновние =

вот сделал только вместо счета НалоговаяНакладная Ошибка Докосн = Док.ДокументОснование; : Поле агрегатного объекта не обнаружено (ДокументОснование)

Мда. Вместо того, чтобы угадывать - не проще в конфигураторе посмотреть, как (если есть) называется реквизит?

ввод документа на основании не означает, что он обязательно сохраниться в реквизите

Документ-основание можно получить, если: - в документе предусмотрен реквизит для хранения ссылки на документ-основание (или предусмотрен общий реквизит); - этот реквизит был корректно заполнен при вводе на основании.

вот в этом и проблема Хряк что есть рекизит РодительскийДокумент но там не всегда есть информация - как служебной командой узнать документ основание ?

Абыр реквизит есть но не всегда корректно заполнен при вводе на основании. - что делать ? т.е у счета есть рекв РодительскийДокумент куда д.б. записан акт по идеи но не всегда там есть инфа

плохо почему есть команда ВыбратьПодчиненныеДокументы а наоборот например выбрать документоснование нет такой команды

если имеются навыки, то можно прямым запросом. индекс по childid в 1s_crdoc есть, искать будет быстро

не пойму все равно если я стоя на документе основание могу выбрать подчиненные ВыбратьПодчиненныеДокументы т.е стоя на акте могу выбрать счета которые ввел на основании этого акта значит есть связь значи я должен как то смочь наоборот стоя на счет выбрать его документ основание акт даже если в счете не заполнен рекизит для хранения ссылки на документ основание

ВыбратьПодчиненныеДокументы но при пустом реквизите команда же работает

Подчинённые документы - это те, у которых в каком-либо реквизите есть ссылка на данный документ.

как же тогда обратная связь устроена от дока основания к его подчиненным связь же работает даже если у подчинных доков не заполнен рекизит для хранения ссылки на документ основание

У меня есть рекизит в подчиненном доке РодительскийДокумент он иногда пуст но даже с пустым значением реквизита они попадают в список подчиненных т.е. связь в одну сторону есть а в другую нет

Ссылка может быть в ЛЮБОМ реквизите. Возможно даже табличной части, но тут надо проверять.

Креатив Спасибо ты прав был другой рекизит просто "Заказ" Вообщем результат у подчиненног дока должен быть реквизит и он должен быть заполнен только тогда есть связь между подчиненным доком и доком основанием

подскажите еще плиз как мне перебрать проводки конкретного дока в 7.7. на котором стою ?

Не плохо-бы спросить ДенисЧ, больно ловко украли. Да и продаёт он их, что наводит на мысель :)

как пример только нужено поле PARENTVAL описание таблиц я вот так сурово получал

Огорчу автора ВыбратьПодчиненныеДокументы тоже работает только в том случае, если реквизит типа Документ основание в документе 2 таки предусмотрен, если не предусмотрен выбор работать не будет, ибо без этого реквизита связь между документами существует только в момент ввода на основании, а после записи ее нет :-(

Читайте также: