Выгрузка из 1с7.7 в joomshoping. Часть 4. Получение данных из 1с

 Задача в этой части - получить данные в таблицу значений, которые впоследствии мы будем выгружать в joomshoping.

 Для получения данных мы воспользуемся объектом библиотеки 1cpp.dl ODBCRecordset, который позволяет выполнять прямые запросы к базе 1с для платформы MS SQL Server.

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

 Запрос можно написать вручную, но для формирования текста запроса к таблицам 1с удобно воспользоваться qryMaker(особенно если вы - новичек в SQL-запросах). О том, как его установить, написано здесь.

 Вобщем, вот нам нужно левое соединение(матчасть по sql-запросам) таблицы справочника "Цены" и таблицы регистра "Остатки ТМЦ" к таблице справочника "Номенклатура".

 1. Выбираем в конструкторе запроса таблицы базы данных справочников и виртуальную таблицу ВТОстатки "Остатки ТМЦ".

2. Выбираем нужные нам поля, которые будут звгружаться на сайт из таблиц справочников и регистра:

3. В качестве алиаса таблицы справочника "Номенклатура" указываем "Ном". В противном случае у нас появляется неоднозначность, так как в регистре есть измерение с названием "Номенклатура":

4. Переходим на вторую закладку, где указываем соединения между таблицами:

5. На третьей закладке указывем группировки и агрегатные функции:

6. В условиях укажем, что выгружаем только элементы (ЭтоГруппа = 2), не помеченные на удаление, с видом <> Работа и Услуга:

 6. Следующую закладку пропускаем, так как то, что там по умолчанию нас устраивает. На закладке "Объединения" указываем наименования выходных полей так как они у нас в joomshoping.

7. Закладку "Сортировка" мы пропустим, так как нам сортировка в данный момент не интересна, а вот на последней остановимся поподробнее.

 В последней закладке мы можем указать, как нам использовать полученный запрос. Если мы установим переключатели в "Модуль формы"+"Новая форма", то qryMaker нам создаст новую внешнюю обработку, которую мы сможем использовать для отладки полученного запроса. Обработка физически сохранится в каталоге пользователя. Иначе мы имеем варианты: вывести текст в окно сообщений и сохранить текст в буфере обмена. 

 Нам больше всего подойдет вариант с отладкой. Укажем имя для обработки и нажмем "Ок". Ниже привожу текст модуля полученной обработки


//*********************************

Процедура Сформировать() Перем тз; //:ТаблицаЗначений
рс = СоздатьОбъект("ODBCRecordset");
//Данный фрагмент построен конструктором.
//При повторном использовании конструктора внесенные вручную изменения будут потеряны!!! ТекстЗапроса = "-- qryMaker:Выгрузка.2012.09.17.21.31.36
|SELECT Ном.CODE product_id
| , Ном.DESCR Name_Ru_ru
| , $ПоследнееЗначение.Цены.Цена(Цены.ID, :ВыбДата) product_price
| , Sum(ОстаткиТМЦОстатки.КоличествоОстаток) Суммаproduct_quantity
|FROM $Справочник.Номенклатура AS Ном With (NOLOCK)
| LEFT OUTER JOIN $РегистрОстатки.ОстаткиТМЦ(,
| RIGHT OUTER JOIN $Справочник.Номенклатура AS Ном With (NOLOCK) ON Ном.ID = Номенклатура,
| (Ном.ISFOLDER = 2)
| AND (Ном.ISMARK = 0)
| AND ($Ном.ВидНоменклатуры <> $Перечисление.ВидыНоменклатуры.Услуга)
| AND ($Ном.ВидНоменклатуры <> $Перечисление.ВидыНоменклатуры.Работа),
| Номенклатура,) AS ОстаткиТМЦОстатки ON Ном.ID = ОстаткиТМЦОстатки.Номенклатура
| LEFT OUTER JOIN $Справочник.Цены AS Цены With (NOLOCK) ON Ном.ID = Цены.PARENTEXT
|WHERE (Ном.ISFOLDER = 2)
| AND (Ном.ISMARK = 0)
| AND ($Ном.ВидНоменклатуры <> $Перечисление.ВидыНоменклатуры.Услуга)
| AND ($Ном.ВидНоменклатуры <> $Перечисление.ВидыНоменклатуры.Работа)
| AND ($Цены.ТипЦен = :ТипЦен)
|GROUP BY Ном.CODE
| , Ном.DESCR
| , Цены.ID
|";
рс.УстановитьТекстовыйПараметр("ВыбДата", ВыбДата);
рс.УстановитьТекстовыйПараметр("ТипЦен", ТипЦен);
тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
тз.ВыбратьСтроку();
КонецПроцедуры

 Теперь мы можем запустить нашу обработку в 1с Предприятии и посмотреть на результат:

 В следующей части мы рассмотрим, как дальше подготовить нашу таблицу данных для выгрузки из 1с в mysql.

Контакты:

Телефон: +7 963 570 26 00

E-mail: al_zzz@mail.ru

Дизайн сайта:

Веб-дизайн и верстка: Зелёнкина Елена

8 963 578 05 35, lena_431@mail.ru