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

Помогите написать обработку

Автор Pavel779, 20 июн 2012, 19:37

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

cska-fanat-kz

Так бы сразу и сказали!

модуль объекта выполняется на сервере, поэтому там все делается как и в 8.1...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pavel779

Если не сложно можете написать полную цепочку кода.

На примере документа Поступление товаров и Услуг.

Что при записи этого документа выходило сообщение со списком номенклатуры, подобранного в табличной части.

Pavel779

Это всё должно быть под управляемом приложении.

cska-fanat-kz

Процедура ПриЗаписи()

Для каждого СтрокаТЧ Из Товары Цикл
Сообщить(СтрокаТЧ.Номенклатура);
КонецЦикла;

КонецПроцедуры
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Цитата: Pavel779 от 22 июн 2012, 13:27
Это всё должно быть под управляемом приложении.

Читайте ответ №20
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pavel779

Я правильно понимаю, к строкам табличной части можно обращаться через оператор

Для Каждого  Из      Цикл


КонецЦикла


А еще есть какието варианты?

cska-fanat-kz

окромя двери в дом можно и через окно входить.
но зачем когда можно через дверь?

перевожу: зачем вам другие варианты?

ЗЫ содержимое ТЧ можно и запросом получить...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pavel779

Нет меня здесь интересует как это можно сделать встроенным языком.

Запросом у меня вроде получилось.

cska-fanat-kz

получилось запросом?
вот и привыкайте им работать - оочень перспективно...
метаться совершенно ни к чему.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Pavel779

Помогите еще кое с чем разобраться.
Вот есть код внешней печатно формы для ЗУП относится к Документу Зарплата к выплате организаций.
Вот её код
#Если Клиент Тогда

Функция Печать() Экспорт

    ПечатьСписокПеречислений(СсылкаНаОбъект);





//Конец печати Счета
КонецФункции

#КонецЕсли

Функция ПечатьСписокПеречислений(СсылкаНаОбъект)

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ПолеСлева = 0;
ТабДокумент.ПолеСправа = 0;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СписокПеречислений";

Макет = ПолучитьМакет("МакетЕРКЦ");

// получаем данные для печати
ВыборкаДляШапки = СформироватьЗапросПоДокументу(СсылкаНаОбъект).Выбрать();
ВыборкаРаботники = СформироватьЗапросДляПечатиПеречняПеречислений(СсылкаНаОбъект).Выбрать();

// подсчитываем количество страниц документа - для корректного разбиения на страницы
ВсегоСтрокДокумента = ВыборкаРаботники.Количество();

ОбластьМакетаШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьМакетаИтогПоСтранице = Макет.ПолучитьОбласть("ИтогПоЛисту");
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");

// массив с двумя строками - для разбиения на страницы
    ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
ВыводимыеОбласти.Добавить(ОбластьМакетаИтогПоСтранице);
 
НаименоватиеПредприятия = СсылкаНаОбъект.Организация.НаименованиеПолное;


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


ОбластьМакетаШапкаДокумента.Параметры.ДатаДок = "От  " + Формат(СсылкаНаОбъект.Дата, "ДЛФ=Д");

ОбластьМакетаШапкаДокумента.Параметры.НаименованиеПредприятия = "сотрудникам " + НаименоватиеПредприятия+ " на их лицевые счета";

//ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации);
ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаДляШапки);
ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапки); // подписи
КонецЦикла;

ТабДокумент.Вывести(ОбластьМакетаШапкаДокумента);
ТабДокумент.Вывести(ОбластьМакетаШапка);

ВыведеноСтраниц = 1; ВыведеноСтрок = 0; ИтогоНаСтранице = 0; Итого = 0;
// выводим данные по строкам документа.
Пока ВыборкаРаботники.Следующий() Цикл

// разбиение на страницы
ВыведеноСтрок = ВыведеноСтрок + 1;

ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаРаботники);
//ОбластьМакетаСтрока.Параметры.НомерСтроки = ВыведеноСтрок;

// Проверим, уместится ли строка на странице или надо открывать новую страницу
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
КонецЕсли;
Если ВывестиПодвалЛиста Тогда

ОбластьМакетаИтогПоСтранице.Параметры.ИтогоНаСтранице = ИтогоНаСтранице;
ТабДокумент.Вывести(ОбластьМакетаИтогПоСтранице);
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапка);
ВыведеноСтраниц = ВыведеноСтраниц + 1;
ИтогоНаСтранице = 0;

КонецЕсли;

ТабДокумент.Вывести(ОбластьМакетаСтрока);
ИтогоНаСтранице = ИтогоНаСтранице + ВыборкаРаботники.Сумма;
Итого = Итого + ВыборкаРаботники.Сумма;

КонецЦикла;

Если ВыведеноСтрок > 0 Тогда
ОбластьМакетаИтогПоСтранице.Параметры.ИтогоНаСтранице = ИтогоНаСтранице;
КонецЕсли;

ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
ВыводимыеОбласти.Добавить(ОбластьМакетаИтогПоСтранице);
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,"");
КонецЦикла;
ОбластьМакетаСтрока.Параметры.Физлицо = " " + Символы.ПС + " ";
Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, Ложь) Цикл
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;

ТабДокумент.Вывести(ОбластьМакетаИтогПоСтранице);

ОбластьМакетаПодвал.Параметры.ФИОРуководителя = "Захаров Е.П.";
ОбластьМакетаПодвал.Параметры.Итого = Итого;
ТабДокумент.Вывести(ОбластьМакетаПодвал);

//Возврат ТабДокумент;
Заголовок = ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект, "Ведомость по перечислению зарплаты в банк");

УниверсальныеМеханизмы.НапечататьДокумент(Табдокумент,,,Заголовок);

КонецФункции // ПечатьСписокПеречислений()

// Формирует запрос по документу
//
// Параметры:
//  Режим - режим проведения
//
// Возвращаемое значение:
//  Результат запроса
//
Функция СформироватьЗапросПоДокументу(СсылкаНаОбъект)

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

// Установим параметры запроса
Запрос.УстановитьПараметр("ДокументСсылка",   СсылкаНаОбъект);
    Запрос.УстановитьПараметр("ДатаДокумента",   СсылкаНаОбъект.Дата);

Запрос.УстановитьПараметр("СтруктурнаяЕдиница",СсылкаНаОбъект.Организация);

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

Запрос.Текст =
"ВЫБРАТЬ
| ОтветственныеЛицаСрезПоследних.ДолжностьНаименование,
| ОтветственныеЛицаСрезПоследних.ОтветственноеЛицо КАК ОтветственноеЛицо,
| ЕСТЬNULL(ФИОФизЛицСрезПоследнихРуководитель.Фамилия + ВЫБОР
| КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) <> """"
| ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) + "".""
| ИНАЧЕ """"
| КОНЕЦ + ВЫБОР
| КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) <> """"
| ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) + "".""
| ИНАЧЕ """"
| КОНЕЦ, ОтветственныеЛицаСрезПоследних.ФизическоеЛицоНаименование) КАК ФИОРуководителя
|ПОМЕСТИТЬ ВТДанныеОтветственныхЛиц
|ИЗ
| ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
| &ДатаДокумента,
| ФизЛицо В
| (ВЫБРАТЬ
| ОтветственныеЛицаСрезПоследних.ФизическоеЛицо
| ИЗ
| ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних)) КАК ФИОФизЛицСрезПоследнихРуководитель
| ПО ОтветственныеЛицаСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследнихРуководитель.ФизЛицо
|
|ИНДЕКСИРОВАТЬ ПО
| ОтветственноеЛицо";
Запрос.Выполнить();

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


Возврат Запрос.Выполнить();

КонецФункции // СформироватьЗапросДляПечати()

// Формирует запрос по документу
//
// Параметры:
//  ПечатаемыйДокумент - документ, из которого выполняется печать
// Платежное поручение исходящее или Зарплата к выплате организаций
//  Ведомости - массив, документы Зарплата к выплате организаций
//  ФИОСокращенно - булево, используется для идентификации печати ФИО с инициалами
//
// Возвращаемое значение:
//  Результат запроса
//
Функция СформироватьЗапросДляПечатиПеречняПеречислений(СсылкаНаОбъект)

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ПлатежноеПоручениеИсходящее") Тогда
ПечатьПлатежногоПоручения = Истина;
Иначе
ПечатьПлатежногоПоручения = Ложь;
КонецЕсли;

// Установим параметры запроса
Если ПечатьПлатежногоПоручения Тогда
Запрос.УстановитьПараметр("ДокументСсылка", СсылкаНаОбъект);
Иначе
Запрос.УстановитьПараметр("ДокументСсылка", СсылкаНаОбъект);
КонецЕсли;

Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр("ФИОСокращенно", Ложь);

ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо КАК Физлицо,
| ЗарплатаКВыплатеОрганизацийЗарплата.НомерСтроки,
| ЗарплатаКВыплатеОрганизацийЗарплата.Сумма,
| ЗарплатаКВыплатеОрганизацийЗарплата.КомпенсацияЗаЗадержкуЗарплаты,
| ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Банк КАК Банк,
| ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Организация,
| ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка КАК Ведомость,
| ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.ПериодРегистрации \\ВОТ ЗДЕСЬ Я ДОБАВИЛ СТРОЧКУ "ПЕРИОД РЕГИСТРАЦИИ" И ХОЧУ ЕЁ ВЫВЕСТИ В МАКЕТ НО ПРОГРАММА ПОЧЕМУ ТО ЕЁ НЕ ВЫВОДИТ КАК ЭТО СДЕЛАТЬ
|ПОМЕСТИТЬ ВТСписокФизлиц
|ИЗ
| Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата
|ГДЕ
| ЗарплатаКВыплатеОрганизацийЗарплата.Сумма + ЗарплатаКВыплатеОрганизацийЗарплата.КомпенсацияЗаЗадержкуЗарплаты > 0";

Если ПечатьПлатежногоПоручения Тогда
ТекстЗапроса = ТекстЗапроса + "
| И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка В(&ДокументСсылка)";
Иначе
ТекстЗапроса = ТекстЗапроса + "
| И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка = &ДокументСсылка";
КонецЕсли;

ТекстЗапроса = ТекстЗапроса + "
|ИНДЕКСИРОВАТЬ ПО
| Физлицо";

Запрос.Текст = ТекстЗапроса;

Запрос.Выполнить();

ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗарплатаКВыплатеОрганизацийЗарплата.НомерСтроки КАК НомерСтроки,
| ЕСТЬNULL(ФИОФизЛицСрезПоследних.Фамилия + ВЫБОР
| КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) <> """"
| ТОГДА "" "" + ВЫБОР
| КОГДА &ФИОСокращенно
| ТОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) + "".""
| ИНАЧЕ ФИОФизЛицСрезПоследних.Имя
| КОНЕЦ
| ИНАЧЕ """"
| КОНЕЦ + ВЫБОР
| КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) <> """"
| ТОГДА "" "" + ВЫБОР
| КОГДА &ФИОСокращенно
| ТОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) + "".""
| ИНАЧЕ ФИОФизЛицСрезПоследних.Отчество
| КОНЕЦ
| ИНАЧЕ """"
| КОНЕЦ, ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.Наименование) КАК ФизЛицо,
| ЗарплатаКВыплатеОрганизацийЗарплата.Сумма + ЗарплатаКВыплатеОрганизацийЗарплата.КомпенсацияЗаЗадержкуЗарплаты КАК Сумма,
| ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета
|ИЗ
| ВТСписокФизлиц КАК ЗарплатаКВыплатеОрганизацийЗарплата
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
| &ДатаДокумента,
| Физлицо В
| (ВЫБРАТЬ
| СписокФизЛиц.ФизЛицо
| ИЗ
| ВТСписокФизлиц КАК СписокФизЛиц)) КАК ФИОФизЛицСрезПоследних
| ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации
| ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = ЛицевыеСчетаРаботниковОрганизации.ФизЛицо
| И ЗарплатаКВыплатеОрганизацийЗарплата.Банк = ЛицевыеСчетаРаботниковОрганизации.Банк
| И ЗарплатаКВыплатеОрганизацийЗарплата.Организация = ЛицевыеСчетаРаботниковОрганизации.Организация
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";

Запрос.Текст = ТекстЗапроса;

Возврат Запрос.Выполнить();

КонецФункции // СформироватьЗапросДляПечатиПеречняПеречислений()

 



Теги:

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

Рейтинг@Mail.ru

Поиск