|
Сделать опись документов | ☑ | ||
---|---|---|---|---|
0
103
05.05.20
✎
11:13
|
Есть Справочник Хранилища. Каждое хранилище закреплено за Ответственным.
Есть документы которые хранятся в этих хранилищах. При создании документа указывается в каком хранилище он находится, количество подлинников и количество копий, при чем копии хранятся в другом хранилище (его тоже указываем в документе) с другим Ответственным. Нужна, грубо говоря опись по всем хранилищам по заданному Ответственному: Задаем Ответственного и получаем таблицу: №пп Хранилище Кол-во наименований документа Кол-во экземпляров док-та Как приплюсовать копии? Вот что у меня в результате: Копии выдает отдельной строкой и вежде прописывает одно и то же хранилище А123, во 2 и 4 строке должны быть другие В 3-ей строке копия,данные 1 и 3 строк должны суммироваться и быть в одной строке № п/п Номер хранилища Количество наименований документов Количество экземпляров документов Примечание 1 А123 8 11 Согласно описи хранилища А123 2 А123 4 6 Согласно описи хранилища А123 3 А123 1 2 Согласно описи хранилища А123 4 А123 1 2 Согласно описи хранилища А123 Функция СформироватьАктПередачиУход() ТабДок = Новый ТабличныйДокумент; НовОтчет = РеквизитФормыВЗначение("Объект"); ОбъектМакет = НовОтчет.ПолучитьМакет("МакетУход"); ОбластьШапка = ОбъектМакет.ПолучитьОбласть("Шапка"); ОбластьШапка.Параметры.ТекущаяДата = Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy") + "г."; ОбластьШапкаТабл = ОбъектМакет.ПолучитьОбласть("ШапкаТабл"); ОбластьЗначениеТабл = ОбъектМакет.ПолучитьОбласть("ЗначениеТабл"); ОбластьПункт2 = ОбъектМакет.ПолучитьОбласть("Пункт2"); ОбластьПодвал = ОбъектМакет.ПолучитьОбласть("Подвал"); ОбластьПодвал.Параметры.ТекущаяДата = Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy") + "г."; ОбластьПодвал.Параметры.Отв = Объект.ТекОтв.Сокращенно; ОбластьПодвал.Параметры.Приним = Объект.НовОтветственный.Сокращенно; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВЫБОР | КОГДА АрхивныйДокумент.КолвоПодл > 0 | ТОГДА ЕСТЬNULL(АрхивныйДокумент.КолвоПодл, 0) | КОНЕЦ КАК КолвоПодл, | ВЫБОР | КОГДА АрхивныйДокумент.КолвоКопий > 0 | ТОГДА ЕСТЬNULL(АрхивныйДокумент.КолвоКопий, 0) | КОНЕЦ КАК КолвоКопий, | АрхивныйДокумент.Хранилище КАК Хранилище, | АрхивныйДокумент.ХранилищеКоп КАК ХранилищеКоп, | АрхивныйДокумент.Ответственный КАК Ответственный, | АрхивныйДокумент.Ответственный.Должность КАК Должность, | АрхивныйДокумент.Ссылка КАК КолДок |ИЗ | Документ.АрхивныйДокумент КАК АрхивныйДокумент |ГДЕ | (АрхивныйДокумент.ХранилищеКоп = &ХранилищеКоп | ИЛИ АрхивныйДокумент.Хранилище = &Хранилище | ИЛИ АрхивныйДокумент.Ответственный = &Ответственный | ) |ИТОГИ | СУММА(КолвоПодл), | КОЛИЧЕСТВО(КолДок) |ПО | Хранилище"; Хран = Справочники.Хранилища.НайтиПоРеквизиту("Ответственный",Объект.ТекОтв,,); Запрос.УстановитьПараметр("Ответственный",Объект.ТекОтв); Запрос.УстановитьПараметр("ХранилищеКоп",Хран); Запрос.УстановитьПараметр("Хранилище",Хран); Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ОбластьШапка.Параметры.ДолжностьОтпускник = Объект.ТекОтв.Должность; ОбластьШапка.Параметры.ФИООтпускник = Объект.ТекОтв.Наименование; ОбластьШапка.Параметры.ДолжностьПринимающий = Объект.НовОтветственный.Должность; ОбластьШапка.Параметры.ФИОПринимающий = Объект.НовОтветственный.Наименование; ОбластьПодвал.Параметры.НомПечатиПринимающего = Объект.ПечатьНовОтветственного; ОбластьПодвал.Параметры.НомПечатиОтпускника = Объект.ПечатьТекОтв; ТабДок.Вывести(ОбластьШапка); ТабДок.Вывести(ОбластьШапкаТабл); Кол = 0; Пока Выборка.Следующий() Цикл Кол = Кол+1; ОбластьЗначениеТабл.Параметры.НомХран = Хран.Наименование; ОбластьЗначениеТабл.Параметры.КолЭкз = Выборка.КолвоПодл; ОбластьЗначениеТабл.Параметры.КолДок = Выборка.КолДок; ОбластьЗначениеТабл.Параметры.НомерПП= Кол; ТабДок.Вывести(ОбластьЗначениеТабл); КонецЦикла; ТабДок.Вывести(ОбластьПункт2); ТабДок.Вывести(ОбластьПодвал); Возврат(ТабДок); |
|||
1
Галахад
гуру
05.05.20
✎
11:25
|
1. Про копии в коде нет ничего.
2. Хран = Справочники.Хранилища.НайтиПоРеквизиту("Ответственный",Объект.ТекОтв,,); Соответственно, Хран - не меняется. 3.Почему? |
|||
2
JeHer
05.05.20
✎
12:16
|
Это что за ИЛИ ИЛИ?
|ГДЕ | (АрхивныйДокумент.ХранилищеКоп = &ХранилищеКоп | ИЛИ АрхивныйДокумент.Хранилище = &Хранилище | ИЛИ АрхивныйДокумент.Ответственный = &Ответственный | ) |
|||
3
103
05.05.20
✎
13:34
|
(1) 1 почему ничего нет про копии? есть ХнанилищеКоп
2 в цикле обходит все нужные хранилища по заданному Ответственному, но в табл. почему-то выдает название первого которое находит. Не понимаю что и где-еще прописать |
|||
4
103
05.05.20
✎
14:14
|
(2) может это и странно выглядит, но это работает
|
|||
5
103
05.05.20
✎
14:17
|
(1) с хранилищем решен вопрос-ошибка была
|
|||
6
Злопчинский
05.05.20
✎
15:31
|
(0) "при чем копии хранятся в другом хранилище (его тоже указываем в документе) с другим Ответственным."
а если копии хранятся в нескольких других хранилищах..? |
|||
7
103
06.05.20
✎
13:56
|
(6) нет, копии хранятся в одном хранилище
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |