Помогите плиз сделать что бы печатная форма Документа "Счет входящий" групировалась по МОЛ
я написал так
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "//{{ЗАПРОС(Сформировать)
|МОЛ = Документ.СчетВходящий.Товар.МОЛ;
|Товар = Документ.СчетВходящий.Товар;
|Количество = Документ.СчетВходящий.Количество;
|Группировка МОЛ Упорядочить По МОЛ.Наименование;
|Группировка Товар Упорядочить По Товар.Наименование;
|Условие(ТекДок=ТекущийДокумент());
|//}}ЗАПРОС";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка(1) = 1 Цикл
ФИО = Запрос.МОЛ.Наименование;
Таб.ВывестиСекцию("МОЛ");
Пока Запрос.Группировка(2) = 1 Цикл
Товар = Запрос.Товар.ПолнНаименование;
Таб.ВывестиСекцию("Строка");
Но почемуто не работает
Что не так?
я написал так
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "//{{ЗАПРОС(Сформировать)
|МОЛ = Документ.СчетВходящий.Товар.МОЛ;
|Товар = Документ.СчетВходящий.Товар;
|Количество = Документ.СчетВходящий.Количество;
|Группировка МОЛ Упорядочить По МОЛ.Наименование;
|Группировка Товар Упорядочить По Товар.Наименование;
|Условие(ТекДок=ТекущийДокумент());
|//}}ЗАПРОС";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка(1) = 1 Цикл
ФИО = Запрос.МОЛ.Наименование;
Таб.ВывестиСекцию("МОЛ");
Пока Запрос.Группировка(2) = 1 Цикл
Товар = Запрос.Товар.ПолнНаименование;
Таб.ВывестиСекцию("Строка");
Но почемуто не работает
Что не так?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) Тогда проще перебрать строки документа с вытаскиванием из них нужных данных.
Примерно так:
Выводить результат:
Примерно так:
ТЧ = СоздатьОбъект("ТаблицаЗначений");
ТЧ.НоваяКолонка("Товар", "Справочник.Номенклатура");
ТЧ.НоваяКолонка("Количество", "Число");
Заготовка = ЗначениеВСтрокуВнутр(ТЧ);
тМОЛ = СоздатьОбъект("ТаблицаЗначений");
тМОЛ.НоваяКолонка("МОЛ", "Справочник.МОЛ");
тМОЛ.НоваяКолонка("ТЧ" , "ТаблицаЗначений");
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Товар = Док.Товар;
Количество = Док.Количество;
стрМОЛ = 0;
Если тМОЛ.НайтиЗначение(Товар.МОЛ, стрМОЛ, "МОЛ") = 0 Тогда
тМОЛ.НоваяСтрока();
тМОЛ.МОЛ = Товар.МОЛ;
тМОЛ.ТЧ = ЗначениеИзСтрокиВнутр(Заготовка);
Иначе
тМОЛ.ТекущаяСтрока(стрМОЛ);
КонецЕсли;
тМОЛ.ТЧ.НоваяСтрока();
тМОЛ.ТЧ.Товар = Товар;
тМОЛ.ТЧ.Количество = Количество;
КонецЦикла;
ПоказатьВыводить результат:
тМОЛ.Сортировать("МОЛ");
тМОЛ.ВыбратьСтроки();
Пока тМОЛ.ПолучитьСтроку() = 1 Цикл
МОЛ = тМОЛ.МОЛ;
Количество = тМОЛ.ТЧ.Итог("Количество");
Таб.ВывестиСекцию("МОЛ");
ТЧ = тМол.ТЧ;
ТЧ.Сортировать("Товар");
ТЧ.ВыбратьСтроки();
Пока ТЧ.ПолучитьСтроку() = 1 Цикл
Товар = ТЧ.Товар;
Количество = ТЧ.Количество;
Таб.ВывестиСекцию("Товар");
КонецЦикла;
КонецЦикла;
Показать
Док=ТекущийДокумент();
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Товар", "Справочник.Номенклатура");
ТЗ.НоваяКолонка("МОЛ", "Справочник.МОЛ");
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
ТЗ.НоваяСтрока();
ТЗ.Товар = Док.Товар;
ТЗ.Мол=Док.Товар.МОЛ;
КонецЦикла;
ТЗ.Сортировать("МОЛ");
ТЗ.ВыбратьСтроки();
МОЛ="";
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Если ТЗ.МОЛ=МОЛ Тогда
Товар=ТЗ.Товар;
Таб.ВывестиСекцию("Строка");
Иначе
МОЛ=ТЗ.Товар.МОЛ;
Таб.ВывестиСекцию("МОЛ");
Товар=ТЗ.Товар;
Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЦикла;
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Товар", "Справочник.Номенклатура");
ТЗ.НоваяКолонка("МОЛ", "Справочник.МОЛ");
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
ТЗ.НоваяСтрока();
ТЗ.Товар = Док.Товар;
ТЗ.Мол=Док.Товар.МОЛ;
КонецЦикла;
ТЗ.Сортировать("МОЛ");
ТЗ.ВыбратьСтроки();
МОЛ="";
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Если ТЗ.МОЛ=МОЛ Тогда
Товар=ТЗ.Товар;
Таб.ВывестиСекцию("Строка");
Иначе
МОЛ=ТЗ.Товар.МОЛ;
Таб.ВывестиСекцию("МОЛ");
Товар=ТЗ.Товар;
Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЦикла;
Ну не знаю. У меня ВСЁ работает.
Только МОЛ у товаров у меня нет, но есть "Сектор".
Вот эта процедура из внешнего отчета работает на ура:
Только МОЛ у товаров у меня нет, но есть "Сектор".
Вот эта процедура из внешнего отчета работает на ура:
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");
Док = ВыбДок; // Реквизит с формы отчета
ТЧ = СоздатьОбъект("ТаблицаЗначений");
ТЧ.НоваяКолонка("Товар", "Справочник.Номенклатура");
ТЧ.НоваяКолонка("Количество", "Число");
Заготовка = ЗначениеВСтрокуВнутр(ТЧ);
тМОЛ = СоздатьОбъект("ТаблицаЗначений");
тМОЛ.НоваяКолонка("МОЛ", "Справочник.Сектора");
тМОЛ.НоваяКолонка("ТЧ" , "ТаблицаЗначений" );
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Товар = Док.Товар;
Количество = Док.Количество;
стрМОЛ = 0;
Если тМОЛ.НайтиЗначение(Товар.Сектор, стрМОЛ, "МОЛ") = 0 Тогда
тМОЛ.НоваяСтрока();
тМОЛ.МОЛ = Товар.Сектор;
тМОЛ.ТЧ = ЗначениеИзСтрокиВнутр(Заготовка);
Иначе
тМОЛ.ТекущаяСтрока(стрМОЛ);
КонецЕсли;
тМОЛ.ТЧ.НоваяСтрока();
тМОЛ.ТЧ.Товар = Товар;
тМОЛ.ТЧ.Количество = Количество;
КонецЦикла;
тМОЛ.Сортировать("МОЛ");
тМОЛ.ВыбратьСтроки();
Пока тМОЛ.ПолучитьСтроку() = 1 Цикл
МОЛ = тМОЛ.МОЛ;
Количество = тМОЛ.ТЧ.Итог("Количество");
Таб.ВывестиСекцию("МОЛ");
ТЧ = тМол.ТЧ;
ТЧ.Сортировать("Товар");
ТЧ.ВыбратьСтроки();
Пока ТЧ.ПолучитьСтроку() = 1 Цикл
Товар = ТЧ.Товар;
Количество = ТЧ.Количество;
Таб.ВывестиСекцию("Товар");
КонецЦикла;
КонецЦикла;
Таб.Показать();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот