1С 8.3 ЗУП Как скопировать документ целиком при незаполненном поле отбора
ХЕЛП ХЕЛП ХЕЛП
При заполненном отборе Список должностей - отрабатывает копирование как и задумано, т.е. получается для каждой должности свой документ - это ПРАВИЛЬНО
При незаполненном отборе Список должностей - создается на каждую строку тч документа 1 новый документ, т.е. на 5 строк в документе будет 5 документов - это НЕПРАВИЛЬНО.
Надо чтоб при незаполненном отборе просто копировался документ, так как должности привязаны к статье и подразделению
При заполненном отборе Список должностей - отрабатывает копирование как и задумано, т.е. получается для каждой должности свой документ - это ПРАВИЛЬНО
При незаполненном отборе Список должностей - создается на каждую строку тч документа 1 новый документ, т.е. на 5 строк в документе будет 5 документов - это НЕПРАВИЛЬНО.
Надо чтоб при незаполненном отборе просто копировался документ, так как должности привязаны к статье и подразделению
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Запрос.УстановитьПараметр("Коэффициент", Коэффициент);
Запрос.Текст =
"ВЫБРАТЬ
| МАВ_БюджетнаяОперация.Ссылка КАК Ссылка,
| МАВ_БюджетнаяОперация.ВерсияДанных КАК ВерсияДанных,
| МАВ_БюджетнаяОперация.ПометкаУдаления КАК ПометкаУдаления,
| МАВ_БюджетнаяОперация.Номер КАК Номер,
| МАВ_БюджетнаяОперация.Дата КАК Дата,
| МАВ_БюджетнаяОперация.Проведен КАК Проведен,
| МАВ_БюджетнаяОперация.ПериодПланирования КАК ПериодПланирования,
| МАВ_БюджетнаяОперация.Сценарий КАК Сценарий,
| МАВ_БюджетнаяОперация.СтатьяОборотовБюджета КАК СтатьяОборотовБюджета,
| МАВ_БюджетнаяОперация.Подразделение КАК Подразделение,
| МАВ_БюджетнаяОперация.Проект КАК Проект,
| МАВ_БюджетнаяОперация.Ответственный КАК Ответственный,
| МАВ_БюджетнаяОперация.Организация КАК Организация,
| МАВ_БюджетнаяОперация.Комментарий КАК Комментарий,
| МАВ_БюджетнаяОперацияТЧОсновная.Должность КАК Должность,
| МАВ_БюджетнаяОперацияТЧОсновная.Сумма КАК Сумма
|ИЗ
| Документ.МАВ_БюджетнаяОперация.ТЧОсновная КАК МАВ_БюджетнаяОперацияТЧОсновная
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.МАВ_БюджетнаяОперация КАК МАВ_БюджетнаяОперация
| ПО МАВ_БюджетнаяОперацияТЧОсновная.Ссылка = МАВ_БюджетнаяОперация.Ссылка
|ГДЕ
| МАВ_БюджетнаяОперация.ПериодПланирования МЕЖДУ &ДатаНач И &ДатаКон
| И МАВ_БюджетнаяОперация.Проведен = ИСТИНА
| И МАВ_БюджетнаяОперация.Сценарий = &Сценарий
| И МАВ_БюджетнаяОперация.СтатьяОборотовБюджета В ИЕРАРХИИ(&СписокСтатейОборотов)
| И МАВ_БюджетнаяОперация.Подразделение В ИЕРАРХИИ(&СписокПодразделений)
| И МАВ_БюджетнаяОперацияТЧОсновная.Должность В ИЕРАРХИИ(&СписокДолжностей)";
Если ЗначениеЗаполнено(Сценарий) Тогда
Запрос.УстановитьПараметр("Сценарий", Сценарий);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И МАВ_БюджетнаяОперация.Сценарий = &Сценарий", "");
КонецЕсли;
Если ЗначениеЗаполнено(СписокСтатейОборотов) Тогда
Запрос.УстановитьПараметр("СписокСтатейОборотов", СписокСтатейОборотов);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И МАВ_БюджетнаяОперация.СтатьяОборотовБюджета В ИЕРАРХИИ(&СписокСтатейОборотов)", "");
КонецЕсли;
Если ЗначениеЗаполнено(СписокПодразделений) Тогда
Запрос.УстановитьПараметр("СписокПодразделений", СписокПодразделений);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И МАВ_БюджетнаяОперация.Подразделение В ИЕРАРХИИ(&СписокПодразделений)", "");
КонецЕсли;
Если ЗначениеЗаполнено(СписокДолжностей) Тогда
Запрос.УстановитьПараметр("СписокДолжностей", СписокДолжностей);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И МАВ_БюджетнаяОперацияТЧОсновная.Должность В ИЕРАРХИИ(&СписокДолжностей)", "");
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
//Копируем документ БО
ДокументКопия = Выборка.Ссылка.Скопировать();
//Находим в ТЧ БО должность
НайденаяСтрока = ДокументКопия.ТЧОсновная.Найти(Выборка.Должность, "Должность");
//Если нашли строку, то меняем в ней сумму
Если Число = 0 Тогда
НайденаяСтрока.Сумма = Выборка.Сумма*Коэффициент;
иначе
НайденаяСтрока.Сумма = Выборка.Сумма+Число;
КонецЕсли;
ВсегоСтрок = ДокументКопия.ТЧОсновная.Количество(); // Получаем количество строк в табличной части
ИндексСтроки = 0; //Первый индекс строки
Пока ИндексСтроки < ВсегоСтрок Цикл //Перебираем строки табличной части
ТекущаяСтрока = ДокументКопия.ТЧОсновная.Получить(ИндексСтроки); //Получаем первую строку
Если ТекущаяСтрока.Сумма<>НайденаяСтрока.Сумма тогда //Проверяем на заданное условие
ДокументКопия.ТЧОсновная.Удалить(ИндексСтроки); //Удаляем
ВсегоСтрок = ВсегоСтрок - 1;
Иначе
ИндексСтроки = ИндексСтроки + 1; //Получаем индекс следующей записи
КонецЕсли;
КонецЦикла;
ДокументКопия.Дата = ТекущаяДата();
ДокументКопия.ПериодПланирования = ДатаНовая;
ДокументКопия.Сценарий = СценарийНовый;
ДокументКопия.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
если значениезаполнено(Выборка.Ссылка) тогда
Сообщить("Копирование документов завершено");
иначе Сообщить("Документы для копирования не найдены");
конецесли;
КонецПроцедуры
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) если не можешь помочь, то не надо было ничего писать...зачем тему засорять..
ну как бы оно и должно быть..документы же копирую...
это ПРАВИЛЬНЫЙ вариант, если ЗАПОЛНЕН ОТБОР по Должности,
соответственно НЕПРАВИЛЬНЫЙ если мне надо получить просто скопированный документ, так как мне нужны все строки этого документа
копирование в цикле - точно есть.
ну как бы оно и должно быть..документы же копирую...
создается на 1 строку тч документа 1 новый документ, т.е. НЕПРАВИЛЬНО.
это ПРАВИЛЬНЫЙ вариант, если ЗАПОЛНЕН ОТБОР по Должности,
соответственно НЕПРАВИЛЬНЫЙ если мне надо получить просто скопированный документ, так как мне нужны все строки этого документа
(5)
если не можешь помочь, то не надо было ничего писать...зачем тему засорять..
если не можешь вопрос правильно (про свою ПРАВИЛЬНОСТЬ/НЕПРАВИЛЬНОСТЬ - ты уже прекрасно продемонстрировал, своё понимание. С моим оно - точно не совпадает) задать - жди помощи, дальше..
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот