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

Описание кода

Автор Ринат Адиев, 12 фев 2017, 11:30

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

Ринат Адиев

Здравствуйте, помогите описать код. Для чего он я знаю, но нужно описать сам процесс, что происходит. В 1С не силен. 
Процедура СчетФактуры(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(СчетФактуры)
Макет = Документы.ОказаниеУслуги.ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
// | ОказаниеУслуг.Адрес,
// | ОказаниеУслуг.Валюта,
// | ОказаниеУслуг.Грузоотправительиегоадрес,

| ОказаниеУслуги.Продавец.ИНН,
| ОказаниеУслуги.Продавец.КПП,
| ОказаниеУслуги.Клиенты,
| ОказаниеУслуги.Номер,
| ОказаниеУслуги.Дата,
// | ОказаниеУслуг.Номер1,
// | ОказаниеУслуг.Дата1,
| ОказаниеУслуги.Клиенты.ИНН,
| ОказаниеУслуги.Клиенты.КПП,
| ОказаниеУслуги.Продавец,
| ОказаниеУслуги.Продавец.ЮридическийАдрес,
| ОказаниеУслуги.ПереченьНоменклатуры.(
| НомерСтроки,
| Номенклатура,
| ЕдиницаИзмерения,
| Код,
| УсловноеОбозначение,
| Количество,
| Цена,
| Сумма,
| ВТомЧислеСуммаАкциза,
| НалоговаяСтавка,
| СуммаНалогаПредъявляемаяПокупателю,
| Сумма1,
| СтранаПроисхождения,
| ЦифровойКод,
| КраткоеНаименование,
| НомерТаможеннойДекларации
| )
|ИЗ
| Документ.ОказаниеУслуги КАК ОказаниеУслуги
|ГДЕ
| ОказаниеУслуги.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
Всего = Макет.ПолучитьОбласть("Всего");
Отступ = Макет.ПолучитьОбласть("Отступ");
Подвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПереченьНоменклатурыШапка = Макет.ПолучитьОбласть("ПереченьНоменклатурыШапка");
ОбластьПереченьНоменклатуры = Макет.ПолучитьОбласть("ПереченьНоменклатуры");
ОбластьВсего = Макет.ПолучитьОбласть("Всего");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ТабДок.Очистить();
ОбщаяСумма = 0;

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

Номер=Выборка.Номер;
Пока Лев(Номер,1)="0" Цикл
Номер=Прав(Номер,СтрДлина(Номер)-1);
КонецЦикла;

ОбластьЗаголовок.Параметры.Код=Номер;

Дата=Выборка.Дата;
Пока Лев(Дата,1)="0" Цикл
Дата=Прав(Дата,СтрДлина(Дата)-1);
КонецЦикла;

ОбластьЗаголовок.Параметры.Дата=Формат(Выборка.Дата,"ДЛФ=Д");

//ОбластьЗаголовок.Параметры.Код1=Строка(Номер1) + "---";
//ОбластьЗаголовок.Параметры.Дата1=Строка(Дата1) + "---";

ТабДок.Вывести(ОбластьЗаголовок);

Шапка.Параметры.Покупатель=Выборка.Клиенты;
Шапка.Параметры.АдресПокупателя=Выборка.Клиенты.АдресОрганизации;
Шапка.Параметры.ИННКПППродавца1=Строка(Выборка.Клиенты.ИНН) + " / " + Строка(Выборка.Клиенты.КПП);
Шапка.Параметры.Грузоотправительиегоадрес=Выборка.Продавец.ЮридическийАдрес;
Шапка.Параметры.Грузополучательиегоадрес=Выборка.Клиенты.АдресОрганизации;
Шапка.Параметры.Продавец=Выборка.Продавец;
Шапка.Параметры.Адрес=Выборка.Продавец.ЮридическийАдрес;
Шапка.Параметры.ИННКПППродавца=Строка(Выборка.Продавец.ИНН) + " / " + Строка(Выборка.Продавец.КПП);
        Шапка.Параметры.Валюта=("Рубли");

ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьПереченьНоменклатурыШапка);

ПереченьНоменклатурыШапка=Макет.ПолучитьОбласть("ПереченьНоменклатурыШапка");
ПереченьНоменклатуры=Макет.ПолучитьОбласть("ПереченьНоменклатуры");

ВыборкаПереченьНоменклатуры = Выборка.ПереченьНоменклатуры.Выбрать();
ВсегоОплата=0;
ВсегоОплата1=0;

Пока ВыборкаПереченьНоменклатуры.Следующий() Цикл
ПереченьНоменклатуры.Параметры.Заполнить(ВыборкаПереченьНоменклатуры);
Код=ВыборкаПереченьНоменклатуры.Номенклатура.Код;

Пока Лев(Код,1)="0" Цикл
Код=Прав(Код,СтрДлина(Код)-1);

КонецЦикла;

ПереченьНоменклатуры.Параметры.Код=Код;
ТабДок.Вывести(ПереченьНоменклатуры, ВыборкаПереченьНоменклатуры.Уровень());
        ВсегоОплата=ВсегоОплата+ВыборкаПереченьНоменклатуры.Сумма;
    ВсегоОплата1=ВсегоОплата1+ВыборкаПереченьНоменклатуры.Сумма1;
Налог=ВыборкаПереченьНоменклатуры.Сумма1-ВыборкаПереченьНоменклатуры.Сумма;
ПереченьНоменклатуры.Параметры.СуммаНалогаПредъявляемаяПокупателю=ВыборкаПереченьНоменклатуры.СуммаНалогаПредъявляемаяПокупателю;

        КонецЦикла;

    Всего=Макет.ПолучитьОбласть("Всего");
Всего.Параметры.ВсегоОплата=ВсегоОплата;
Всего.Параметры.ВсегоОплата1=ВсегоОплата1;

ВставлятьРазделительСтраниц = Истина;

ТабДок.Вывести(Всего);
ТабДок.Вывести(Отступ);
ТабДок.Вывести(ОбластьПодвал);   
КонецЦикла;
//}}
КонецПроцедуры


Геннадий ОбьГЭС

Цитата: Ринат Адиев от 12 фев 2017, 11:30
Здравствуйте, помогите описать код. Для чего он я знаю, но нужно описать сам процесс, что происходит. В 1С не силен. 
Процедура СчетФактуры(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(СчетФактуры)
Макет = Документы.ОказаниеУслуги.ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
// | ОказаниеУслуг.Адрес,
// | ОказаниеУслуг.Валюта,
// | ОказаниеУслуг.Грузоотправительиегоадрес,

| ОказаниеУслуги.Продавец.ИНН,
| ОказаниеУслуги.Продавец.КПП,
| ОказаниеУслуги.Клиенты,
| ОказаниеУслуги.Номер,
| ОказаниеУслуги.Дата,
// | ОказаниеУслуг.Номер1,
// | ОказаниеУслуг.Дата1,


Начнём с того, что комментарии внутри строки (между открывающей и закрывающей двойной кавычкой ") запроса не ставятся (двойными) слэшами //
Это не код 1С, а код языка запроса (диалект SQL)

Если вы даже таких азов не знаете, то вам лучше обратиться за помощью к программисту или же начать с курсов для начинающих программмистов.
Полно в интернете

pavl_vs

Ринат Адиев, сам процесс, если коротко, состоит из двух этапов:
- запрос к документу (Ссылка), с помощью которого получаем (Выборка) (i) реквизиты продавца и покупателя (они же реквизиты документа, это шапка документа) и характеристики номенклатуры окзанных услуг (товаров и т.п.) из Табличной части документа;
- заполнение по результатам запроса параметров Табличного документа (ТабДок), который передается в вызывающую процедуру.

Описывать процесс подробно - дорогое "удовольствие"; советую почитать, например, Радченко М.
Что же касается второго этапа, то по-моему на все вопросы ответы можно получить в Синтакс-Помощнике.

А с конкретной "непоняткой", конечно же, обращайтесь на форум - форум поможет.
Добавлено: 12 фев 2017, 13:55


Цитата: Геннадий ОбьГЭС от 12 фев 2017, 13:18
Начнём с того, что комментарии внутри строки (между открывающей и закрывающей двойной кавычкой ") запроса не ставятся (двойными) слэшами //
Не соглашусь - это вполне допустимо; очень часто пользуюсь для установки личной метки в измененных конфигурациях.
Совсем иное дело, если попытаться такой комментарий разместить в конце строки - это вызовет ошибку.

Геннадий ОбьГЭС

В переменную Макет получается макет ПФ (печатной формы) документа
После чего туда, через размеченные в макете области и параметры, выводятся различные значения

Ринат Адиев

pavl_vs, Благодарю.

Геннадий ОбьГЭС, Код не я писал.

Теги:

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

72852

Ответов: 2
Просмотров: 604

77516

Ответов: 7
Просмотров: 449

75632

Ответов: 4
Просмотров: 441

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

Поиск