Обход по группировкам в запросе, соединение таблиц, параметры в запросе, выгрузка прайс-листа в Excel, PDF, Docx, TXT

18.07.22

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

В помощь начинающим программистам. Использую обработку из предыдущей моей публикации для разработки выгрузки Прайс-листа в Excel, PDF, Docx, TXT. Рассмотрю, как работает обход результата запроса ПоГруппировкам (релиз платформы 1С:Предприятие 8.3 (8.3.20.1674), самописная конфигурация).

ЗАДАЧА: необходимо реализовать механизм выгрузки Прайс-листа нашей организации (номенклатура в наличии, с актуальными ценами), с возможностью отбора по Складу.

 

  • Возьмем обработку из предыдущей моей публикации и модифицируем под текущую задачу.
  • Копируем обработку. Меняем название на ВыгрузкаПрайсаВФайл. Добавляем реквизит: Склад (Тип: СправочникСсылка.Склады)
  • Разместим реквизит Склад на форме обработки.

 

 

  • Доработаем Макет. В моем варианте печатная форма Прайса будет иметь такой вид. Как редактировать макет печатных форм можно посмотреть уроки в Интернете.

 

 

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

	 КонецЦикла;  
	 
	 Возврат(ТабДок);
	 
 КонецФункции
 

 

  • Обратите внимание: в функцию теперь передается второй параметр - Склад. Для этого в процедуре КнопкаВыгрузить передаем параметр Объект.Склад
//Заполним ТабДок на сервере
		ЗаполнитьТаблицуНаСервере(ТабДок, Объект.Склад);

 

Рассмотрим детально запрос

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

Нам необходимо получить список товаров, которые имеются в наличии на складах, а также наиболее актуальную цену.

  • Общаемся в запросе к Соединению таблиц: Справочника "Номенклатура", виртуальной таб. СрезПоследних Регистра сведений "ЦеныНоменклатуры" и Регистру накопления - "ОстаткиТоваров". Соединяем по полю Номенклатура

Обратите внимание: таблице Справочник.Номенклатура я задала псевдоним "Товары", во избежание возникновения ошибок при исполнении запроса, поскольку название таблицы совпадает с наименованием полей регистров.

  • Не задаем параметр Период для регистров, поскольку нам нужны самые "свежие" остатки товаров и цены.
  • В секции ГДЕ указываем, что нас интересуют товары, имеющиеся в наличии и не помеченные на удаление.
  • А также проверяем не пусто ли значение параметра Склад. В случае, если пользователь не выбрал на форме интересующий Склад, в прайс пойдет информация по всем складам.
  • Сгруппируем ИТОГИ ПО Складу и Категории
  • Установим параметры.

 

Результат запроса в консоли выглядит так:

 

 

В результирующем запросе у нас есть ИТОГИ, поэтому обходить результат будем ПоГруппировкам, а затем выберем Детальные записи.

Более подробно об этом типе обхода советую прочесть в Главе.2 книги "Язык запросов 1С: Предприятие" Е.Ю. Хрусталевой.

  • В цикле мы получаем записи группировки 1-го уровня (Склад), во вложенном цикле записи группировки 2-го уровня (Категория) и в выборке детальных записей - сами строки с номенклатурой.

 

  • Получаем Макет. Области макета. В обходах выборки заполняем параметры. И возвращаем ТабДок.

 

Наша обработка готова. 

На первом скрине: на форме склад не был выбран, Прайс выгружен в формат PDF .

На первом скрине: результат с отбором по складу, Прайс выгружен в формат XLS.

 

   

 

Пробуйте, запускайте.

Успешной работы!

Загрузка документов из Excel в 1С

Решение «Загрузка документов из Excel в 1С» позволяет быстро импортировать в 1С документы Excel — УПД, ТОРГ-12, отчёты маркетплейсов, заказы, счета и прайсы — без предварительной настройки. Достаточно выбрать файл, документ 1С и нажать «Загрузить» — всё готово за секунды.

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    273726    1523    422    

1185

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    190828    372    294    

428

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 24870 руб.

12.06.2017    163245    993    329    

487

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

58000 руб.

15.04.2019    86192    231    181    

168

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

50200 руб.

24.04.2015    209523    179    253    

298

Операции по ВЭД Файловый обмен (TXT, XML, DBF), FTP Программист Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Платные (руб)

Федеральная таможенная служба России давно поддерживает унифицированный формат электронных документов для обмена с информационными системами предприятий. xmlns="urn:customs.ru:Information:ExchangeDocuments:". Структура, утвержденная комиссией Таможенного союза. Осталось только сделать загрузку в 1С из этого формата. На выходе - два документа ГТД по импорту и Поступление (акты, накладные) Обработка актуализирована на начало 2026 года (ставка НДС 22%)

24400 руб.

09.08.2016    96382    373    379    

119

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 37800 руб.

15.12.2021    35712    263    68    

200

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

55200 руб.

03.12.2020    46370    132    83    

122