gifts2017

Последний тюнинг известной обработки 1CQA (консоль прямых запросов 1С++) для 1С:Предприятие-77.

Опубликовал Юрий Осипов (yuraos) в раздел Администрирование - Сервисные утилиты

Авторы исходной версии:  Дмитрий Ощепков (dmitro-75@mail.ru),
Ivan T Berezdetsky (berezdetsky@yahoo.com). В предлагаемой версии:
1) Добавлена возможность выбирать тип провайдера данных ODBC или OLEDB (только базы DBF);  
2) Добавлена возможность редактировать текст запроса в диалоге конструктора запросов, предоставляемого объектом "AddIn.qryConsole" ВК  qryConsole.dll (только базы SQL);
3) Расширен список типов объектов, которые могут принимать параметры запроса;
4)Добавлена возможность через параметры запроса укладывать списки ссылок объектов во временные таблицы (в том числе с иерархическим включением). Эти таблицы можно использовать  в тексте запроса по имени ‘#<ИмяПараметра>’;
5) Добавлена возможность открывать обработку в режиме подбора (или имитации подбора) из других форм для подбора произвольных выборок данных из базы;
6) Сделано множество других улучшений (интерфейсных и пр.);

 

Свет мой, SQL, скажи, да всю правду доложи!

Я ль в инете всех шустрее, всех прикольней и умнее?

Пушкин – АС!

 

Благодарности авторам:

Хочется сразу сказать огромное спасибо авторам обработки, создавших для администраторов и разработчиков такой прекрасный инструмент.

Отдельная признательность  Ivanu T Berezdetsky за реализацию поддержки выполнения пакетов запросов. До этого мне приходилось сначала выводить оттранслированный  текст запроса в окне сообщений, а затем выполнять его в QA на сервере.

Исходные версии обработки и много другого полезного можно найти на сайте: http://www.dev.citykirov.ru/.

Обсуждение обработки и разные ее модификации смотрите на форуме:  http://www.1cpp.ru/forum/YaBB.pl?num=1157967835.

 

Требования:

1) Обязательно - наличие предварительно загруженных (или лежащих в одном  каталоге с 1CQA) внешних компонент 1СPP.dll (www.1cpp.ru) и FormEx.dll (www.dorex.pro).

2) Желательно, чтобы в конфигурации был класс определенный пользователем "Общие.Форма.Привязка" (www.dev.citykirov.ru ,автор Дмитрий Ощепков).  Обсуждение класса на форуме 1СРР:  http://www.1cpp.ru/forum/YaBB.pl?num=1200464076. При отсутствии класса обработка работать будет, но без привязок элементов в форме.

3) Желательно (для возможности укладывать списки объектов во временные таблицы) иметь для редактирования списков обработку под именем ПодборUChoice (улучшенная обработка УОПО). Она может быть встроена или лежать в одном каталоге с 1CQA. Без этой обработки будут не доступны специальные типы параметров запроса, через которые создаются временные таблицы.

4) При большом желании (для редактирования запроса в диалоге конструктора) требуется наличие внешней компоненты qryConsole.dll(автор Ivan T Berezdetsky). Обработка при открытии пытается ее загрузить (так же как 1CPP). Если загрузить не удается, то соответствующие элементы управления в обработке становятся недоступными.

Установочный дистрибутив и обсуждение внешней компоненты  - на форуме: http://www.1cpp.ru/forum/YaBB.pl?num=1193394153.  Для работы ВК qryConsole.dll обязательна установка Office web components (OWC11). Иначе обработка будет вас малоприятно ругать при открытии (беда устраняется или установкой OWC11, или удалением/переименованием файла библиотеки – чтоб вообще не грузилась).

 

Описание файлов поставки:

1) Консоль1CQA.rar - обработка 1CQA под именем «Консоль1CQA» (иначе не встраивается);

2) FormEx1CPP.rar – библиотеки 1CPP.dll, FormEx.dll и класс "Общие.Форма.Привязка";

3) PlugIns.rarвспомогательные обработки ПодборUChoice и ИзменениеВремениДокумента. Последняя обработка используется в меню действий со значением в ячейке таблицы результатов запроса по двойному клику мыши (Рис.11) для изменения даты-времени документа.

4) Samples.rar  – разные примеры запросов, использованные в публикации.

5) Консоль1CQA_ALL.rar – полный набор файлов поставки (все 4 архива);

 

Описание установки:

1) Обеспечить загрузку 1CPP.dll и FormEx.dll (обязательно):

Библиотеки можно скачать с сайтов разработчиков или  взять  из каталога файла поставки \..\FormEx1CPP.rar\FormEx1CPP\DLL\:

Файл 1CPP2037.dll – библиотека 1CPP версии 2.0.3.7, рекомендуемый релиз с ядром FormEx. Для него загрузка FormEx.dll не требуется.

Файл 1CPP2507.dll – библиотека 1CPP версии 2.5.0.7, рекомендуемый релиз с раздельной загрузкой FormEx.

Файл 1CPP3220.dll – библиотека 1CPP версии 3.2.2.0  (последняя с сайта разработчиков)

Файл 1CPP32316.dll – библиотека 1CPP версии 3.2.2.8 (одна из последних тестовых версий с форума: http://www.1cpp.ru/forum/YaBB.pl?num=1288774760/all )  

Файл FormEx205101.dll – библиотека FormEx версии 2.0.5.101 (самая последняя).

При копировании файлов из имени следует убрать цифры версий.

 

Загружать библиотеки можно стандартным способом в процедуре ПриНачалеРаботыСистемы():

                ЗагрузитьВнешнююКомпоненту(КаталогПрограммы ()+"1CPP.dll");

                ЗагрузитьВнешнююКомпоненту(КаталогПрограммы ()+"FormEx.dll");

Если же 1QA будет использоваться как внешняя, то достаточно скопировать файлы dll в каталог обработки. Она сама их загрузит при открытии.

 

2) Подключить класс "Общие.Форма.Привязка" (желательно):

Можно из каталога файла поставки \..\FormEx1CPP.rar\FormEx1CPP\ в каталог базы скопировать файлы Defcls.prm  и  КОП_ОбщиеФормаПривязка.ert

А можно включить класс в конфигурацию.  Для этого туда нужно добавить из одноименных внешних файлов обработки Defcls  и  КОП_ОбщиеФормаПривязка.

ВНИМАНИЕ! Если у вас уже используются другие классы, то придется добавить описание класса в файл Defcls.prm  или обработку Defcls  из соответствующих файлов.

 

3) Вспомогательные обработки (желательно):

Скопировать из каталога файла поставки \..\PlugIns.rar\PlugIns\ в каталог обработки 1CQA или добавить в конфигурацию под теми же именами.

 

4) Конструктор запросов (при большом желании):

Установить внешнюю компоненту qryConsole.dll из скаченного дистрибутива (смотри выше). И обязательно установить Office web components (OWC11)!

 

Описание добавлений и улучшений в предлагаемой версии:

1)      Для баз DBF добавлена возможность выбирать интерфейс доступа к данным ODBC или OLEDB (Рис.2).  Для использования OLEDB требуется установить OLEDB vfpoledb provider v9. В базах DBF через ODBC, честно говоря, мне не удалось заставить работать прямые запросы. Через OLEDB вроде все работает.

Для баз SQL по ряду соображений я решил оставить доступ только через ODBC (Рис.1).

2)      Для баз SQL добавлена возможность редактировать текст запроса в диалоге конструктора запросов, поставляемого ВК qryConsole.dll (Рис.3 и Рис.4). Для баз DBF эта возможность, к сожалению, недоступна в текущей версии этой ВК.

3)      Расширен список типов, которые могут принимать параметры запроса (Рис.6). Добавлены следующие типы: Календари, ВидыРасчетов, Бухгалтерские счета, ПланыСчетов (системное перечисление), ВидыСубконто.

4)      Добавлены служебные типы параметры запроса СписокСсылок9, СписокСсылок13 и ИерархияСсылок9.  Значения этих параметров представляют списки объектов определенного типа  и используется для укладывания во временные таблицы ссылок на объекты (включая с иерархическим включением).  Временная таблица доступна в тексте запроса под именем '#'. Для редактирования списков объектов (Рис.7) используется обработка под именем ПодборUChoice (улучшенная обработка УОПО). При отсутствии обработки ПодборUChoice  в конфигурации или в каталоге 1CQA эти служебные типы параметров исключаются из меню выбора типов параметра запроса.

5)      Добавлена возможность открывать 1CQA в режиме подбора (имитации подбора) для возврата в другие формы произвольных выборок данных.

Имитация подбора используется в том случае, когда 1CQA  - внешняя обработка. Тогда функция ОткрытьПодбор(,,) становится бесполезна. Приходится просто открывать внешнюю обработку Консоль1CQA с передачей через параметр формы контекста той формы, которая вызывает подбор.

Имитация выбора в подборе осуществляется вызовом в контексте формы владельце процедуры ОбработкаПодбора(,,,) с помощью метода ВыполнитьПроцедуру(Контекст, ИмяПроцедуры, СписокАргументов) объекта «Сервис» ВК FormEx.dll.

6)      Другие улучшения (их множество, смотрите подробности в описании в самой обработке). Вот  некоторые из них:

  1. При клике по пустой таблице параметров запроса выводится диалог с информацией о работе с параметрами запроса (Рис.5);
  2. Выбор типа объекта производится в удобном красивом диалоге в виде дерева (Рис.6);
  3. При клике по таблице результатов запроса, если значение в ячейке ссылочного типа, выводится меню действий с объектом (Рис.11). Меню позволяет:

    открыть объект для просмотра-редактирования;

    открыть объект в списке (журнале);

    пометить его на удаление;

    снять пометку;

    удалить непосредственно;

    открыть объект для редактирования в обработке 'Редактор Реквизитов' (автор Цылёв Владислав vet7777@mail.ru);

  4. Для документов доступны дополнительные действия:

    провести;

    отменить проведение; 

    изменить дату-время (для этого действия требуется обработка ИзменениеВремениДокумента);

  5.  Кроме этого для документа можно вывести отчет о движениях или сформировать структуру подчинености. Соответствующие отчеты интегрированы в консоль (чтобы не зависеть от используемой конфигурации): 

Отчет о движениях - в полном вариате (по регистрам, проводкам, записям ЖР и истории реквизитов).

При формировании структуры подчиненности для выборки подчиненых документов используются прямые запросы к базе. 

7)      Различные варианты очистки запроса (Рис.8);

8)      Печать таблицы параметров запроса и таблицы его результатов (Рис.9).

9)      Выбор значения параметра 'Collate' / 'Collating' в строке соединения (только базы DBF) (Рис.13).  

10)    Добавлена обработка спец.комментариев в тексте запроса (для установки спец.опций выполнения запроса).
 поддерживается обработка следующих спец.комментариев:

'--!ExecuteTransaction' - выполнять все батчи запроса в единой транзакции (при ошибке хоть в одном батче транзакция откатывается);
'--!ExecuteRollback'        - выполнять все батчи в транзакции с ее откатом независимо от результата выполнения (для просмотра "результатов" запроса без фактического изменения данных);
подробности смотрите в макете "СпецКомметарииЗапроса" обработки (можно вывести в табличный документ, Рис.5 и Рис.9).

11)    Добавлен вывод описания обработки в табличный документ ( Рис.5 и Рис.9).

 

Применение:

Для баз SQL доступны особые режимы выполнения запроса (Рис.12): проверка синтаксиса и вывод плана выполнения запроса. План выполнения кроме таблицы результатов выводится еще в отдельном текстовом документе.

Для баз DBF использование ограничено в основном разделенным режимом. В монопольном режиме в базах DBF выполнять прямые запросы не удается без специальных ухищрений (подмены библиотеки DBEng32.dll в каталоге BIN) или использования особых провайдеров доступа к данным.

При попытке использования в монопольном режиме обработка пытается выполнить тестовый запрос: "select COUNT(*) from 1SUSERS". Если запрос выполняется без ошибок - никаких сообщений не выводится. Иначе (если тестовый запрос выдает ошибку) программа  выдает пользователю предупреждение об этом печальном факте, но работать в консоли не запрещает. Если после этого запрос вдруг выполнился без ошибок, обработка запоминает эту радость и больше не тревожит пользователя об этом ... до первой следующей ошибки запроса, в тексте которой есть строка "Cannot open file" Cool.

Основные направления для использования:

1)      Для разработчиков: проверка запросов, изучение вопроса о том где, как и какие данные хранятся в базе данных.

2)      Администрирование данных: исправление ошибок в ИБ в дополнение к процедуре тестирования-исправления. В больших рабочих базах тестирование-исправление выполнить нереально. У меня оно длилось, например, больше двух суток. Поэтому тестирование запускается на копии базы в пакетном режиме с записью лога. Затем по информации из лога в 1CQA запросом SELECT вытаскиваем некорректные записи из базы. После анализа этих записей принимается решение: 

  • исправляем запросом UPDATE ,
  • удаляем запросом DELETE,
  • помечаем на удаление, чтобы потом удалить с контролем ссылочной целостности (пометить можно тоже в 1CQA запросом  UPDATE).

3)      Реорганизация данных при обновлениях: установка новых реквизитов, ресурсов и измерений в таблицах объектов метаданных, например регистров.  В архиве Samples.rar  из файлов поставки в файле Sample_TransforRegister_SQL.qry находится пример реально использованного скрипта для довольно сложной установки новых измерений и реквизитов регистра. Фактически скрипт заменяет перепроведение по регистру (выборочно, без пересчета итогов).  Итоги также можно пересчитать прямыми запросами с помощью обработок (только базы SQL):

 ПересчетИтоговРегистров.ert или 1CУстановкаТА.ert.

 

Благодарности:

Кроме авторов обработки хотелось бы также поблагодарить всех разработчиков 1CPP и FormEx. Без  их самоотверженного труда 1С-ка была тормозна, скучна, безлика и беспросветна!

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Консоль1CQA_ALL.rar
.rar 2,23Mb
17.12.11
291
.rar 2,23Mb 291 Скачать
Консоль1CQA.rar
.rar 49,29Kb
17.12.11
19
.rar 49,29Kb 19 Скачать
FormEx1CPP.rar
.rar 2,12Mb
11.12.11
17
.rar 2,12Mb 17 Скачать
PlugIns.rar
.rar 62,94Kb
26.11.11
14
.rar 62,94Kb 14 Скачать
Samples.rar
.rar 3,86Kb
20.11.11
15
.rar 3,86Kb 15 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

0. Юрий Осипов (yuraos) 20.11.11 03:16
Авторы исходной версии: Дмитрий Ощепков (dmitro-75@mail.ru),
Ivan T Berezdetsky (berezdetsky@yahoo.com). В предлагаемой версии:
1) Добавлена возможность выбирать тип провайдера данных ODBC или OLEDB (только базы DBF);
2) Добавлена возможность редактировать текст запроса в диалоге конструктора запросов, предоставляемого объектом "AddIn.qryConsole" ВК qryConsole.dll (только базы SQL);
3) Расширен список типов объектов, которые могут принимать параметры запроса;
4)Добавлена возможность через параметры запроса укладывать списки ссылок объектов во временные таблицы (в том числе с иерархическим включением). Эти таблицы можно использовать в тексте запроса по имени ‘#<ИмяПараметра>’;
5) Добавлена возможность открывать обработку в режиме подбора (или имитации подбора) из других форм для подбора произвольных выборок данных из базы;
6) Сделано множество других улучшений (интерфейсных и пр.);


Перейти к публикации

1. Юрий Осипов (yuraos) 20.11.11 03:16
О сколько нам консолей чудных готовит просвещенья дух... :D
2. Юрий Осипов (yuraos) 20.11.11 12:49
... или счастья много не бывает! ;)))))
yuraos пишет:

О сколько нам консолей чудных готовит просвещенья дух...
3. Юрий Осипов (yuraos) 20.11.11 17:53
Народ!!!
Если обработка скажет что-то странное насчет ваших прав - значит вы себя обидели! ;))))
Поскольку обработка не для шаловливых ручек,
при открытии там сразу написано:
ПравоЕсть=1;
ПравоЕсть=ПравоЕсть
*ПравоДоступа("УдалениеПомеченныхОбъектов")
*ПравоДоступа("ПоискСсылокНаОбъекты")
*ПравоДоступа("ИспользованиеЛюбыхВнешнихОтчетов")
*ПравоДоступа("ГрупповоеПроведениеДокументов")
*ПравоДоступа("УправлениеБухгалтерскимиИтогами")
*ПравоДоступа("УправлениеОперативнымиИтогами")
*ПравоДоступа("МонопольныйРежим")
*ПравоДоступа("СохранениеИВыгрузкаДанных")
*ПравоДоступа("АдминистративныеФункции"); // по совокупности крутых прав
Если (ПравоЕсть=0) Тогда
Предупреждение("Недостаточно круты права доступа !!!",60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
4. Юрий Осипов (yuraos) 20.11.11 17:55
yuraos пишет:

Народ!!!
Если обработка скажет что-то странное насчет ваших прав - значит вы себя обидели! ;))))
Поскольку обработка не для шаловливых ручек,
при открытии там сразу написано:
ПравоЕсть=1;
ПравоЕсть=ПравоЕсть
*ПравоДоступа("УдалениеПомеченныхОбъектов")
*ПравоДоступа("ПоискСсылокНаОбъекты")
*ПравоДоступа("ИспользованиеЛюбыхВнешнихОтчетов")
*ПравоДоступа("ГрупповоеПроведениеДокументов")
*ПравоДоступа("УправлениеБухгалтерскимиИтогами")
*ПравоДоступа("УправлениеОперативнымиИтогами")
*ПравоДоступа("МонопольныйРежим")
*ПравоДоступа("СохранениеИВыгрузкаДанных")
*ПравоДоступа("АдминистративныеФункции"); // по совокупности крутых прав
Если (ПравоЕсть=0) Тогда
Предупреждение("Недостаточно круты права доступа !!!",60);
СтатусВозврата(0);
Возврат;
КонецЕсли;


вдруг какой продвинутый юзвер (знаю я таких) додумается написать:
truncate table _1sjourn
:)))))))
5. Олег Шалимов (CaSH_2004) 21.11.11 02:00
Красиво расписано, я так больше на 8-ке, неужели крупные конторы на 7-ке не думают переходить на 8-ку? Все будете допиливать 7-ку?
6. Юрий Осипов (yuraos) 21.11.11 05:05
Да думают, думают... и еще раз думают!
И чем крупней - тем дольше и трудней :)))))
7. Виктор Клименко (dicwork) 21.11.11 20:42
(6) yuraos
Просто если много наработанного кода под "семерку", его трудно сразу вот так взять и перенести на "восьмерку". Поэтому и сидим на "семерке" и пилим ее дальше под себя.
8. Юрий Осипов (yuraos) 22.11.11 06:10
dicwork пишет:
(6) yuraos
Просто если много наработанного кода под "семерку", его трудно сразу вот так взять и перенести на "восьмерку". Поэтому и сидим на "семерке" и пилим ее дальше под себя.

Етта точно!
Сидим на этом суку и пилим-пилим-пилим его .... ;))))))
Че дальше бывает по закону гравитации наверное все знают.
9. Юрий Осипов (yuraos) 22.11.11 21:26
Доброго времени суток! Обновлены файлы поставки:
Консоль1CQA_ALL.rar
Консоль1CQA.rar
PlugIns.rar
Подправлен мелкий баг в консоли при "перезагрузке запроса" +
+ некритические изменения во вспомогательной обработке ИзменениеВремениДокумента.ert.
10. oav (oav) 24.11.11 07:36
Очень хорошо ,что появилась возможность редактировать запрос.
11. Валентин Оплачено (Naked) 24.11.11 11:46
Кстати ИМХО на семерке как раз и остались большинство крупных организаций, и причина известна:
большая организация => очень большие запросы\хотелки узеров => очень очень много дописок, и перенос ни к чему если все работает на 7
12. Епрст (Ёпрст) 24.11.11 13:07
(0) А зачем древние версии ВК кидать в архив ?
13. Епрст (Ёпрст) 24.11.11 13:13
+Для oledb строка подключения устаревшая + запросы в дбф базе сто лет в обед выполняются в монопольном режиме.
14. Юрий Осипов (yuraos) 24.11.11 14:17
(12) Ёпрст,
версии в архиве те,
которые на сайте 1cpp указаны как "рекомендованные стабильные релизы". :)))
15. Юрий Осипов (yuraos) 24.11.11 14:23
yuraos пишет:
(12) Ёпрст,
версии в архиве те,
которые на сайте 1cpp указаны как "рекомендованные стабильные релизы". :)))


а что под версией 1cpp3220 или 1cpp3227
будет в dbf и в монопольном режиме работать
без подмены библиотеки DBEng32.dllв каталоге BIN???
16. Епрст (Ёпрст) 24.11.11 15:20
>>>"рекомендованные стабильные релизы".

Этой "издёвке" года 4 уже.
И читай дальше, что пишут на сайте:

icpp/3.x (рекомендуется к использованию)

В начале 2008 года проект 1C++ портирован с MSVS 6.0 на MSVS 2005(2008) / Intel Compiler (IСL) / STLPort / Boost 1.35.0

Дальнейшее развитие идет под именем icpp (версии 3.x.x.x)
17. Епрст (Ёпрст) 24.11.11 15:22
(15)Не будет. И можно работать либо на заплатке от hogik, либо на провайдере от ужаста, без изменения бэкенда
18. Епрст (Ёпрст) 24.11.11 15:22
+ А строка для оледб у тебя не верная (точнее, устаревшая)
19. КТУЛХУ 24.11.11 20:32
Ёпрст пишет:

+ А строка для оледб у тебя не верная (точнее, устаревшая)


Млин, ЁПРСТ, ты чувак умный, авторитетный!
Не поделися с обчеством умом-размом?

Народ с открытым ртом смотрит на тебя... ;))))))))
20. oav (oav) 25.11.11 10:59
Хорошая вещь. Главное удобная и простая и понятная.!!!
22. Юрий Осипов (yuraos) 26.11.11 10:37
Ёпрст пишет:

На, дарю


Преааааааааааааагромммммммное спасибо!
Если такие умные люди ничего не писали бы полезного на форумах.....
....они бы потеряли бы всякий смысл! ;)))))))))))))))))))))))))))))))))))))))))
23. Юрий Осипов (yuraos) 26.11.11 10:45
Ёпрст пишет:

>>>"рекомендованные стабильные релизы".

Этой "издёвке" года 4 уже.
И читай дальше, что пишут на сайте:

icpp/3.x (рекомендуется к использованию)

В начале 2008 года проект 1C++ портирован с MSVS 6.0 на MSVS 2005(2008) / Intel Compiler (IСL) / STLPort / Boost 1.35.0

Дальнейшее развитие идет под именем icpp (версии 3.x.x.x)

----
Пардонс ... не думал что это "для лохов".
Учтемс что разработчики иногда шутятс :))))))))))))))))))
24. Юрий Осипов (yuraos) 26.11.11 18:31
Всем доброе время суток!!!
Обновлены файлы поставки:
Консоль1CQA.rar, Консоль1CQA_ALL.rar, и PlugIns.rar .
-------------------------------------------------------------------------------------
1) Для устранения "навязчивого сервиса" добавлен флаг 'ДП' над кнопкой "Выполнить" (по умолчанию сброшен).
Если флаг установлен - выводится меню дополнительных действий.
Если не установлен - просто выполняется запрос.
2) Для баз DBF добалена возможность выбирать значение параметра 'Collate' / 'Collating'
через меню действий, выводимого по кнопке "Выполнить" (Скриншот 13).
4) В сервисной обработке ПодборUChoice.ert устранен мелкий баг.
5) По замечаниям господина ЁПРСТ в архив FormEx1CPP.rar
добавлены последние версии ВК 1cpp.dll.
-------------------------------------------------------------------------------------
Всем спасибо за внимание!
25. Евгений Мартыненков (JohnyDeath) 27.11.11 19:09
Оригинально ты авторов отблагодарил - засветил их мыло для спам-ботов и прочей нечести!
27. Сергей (Che) Коцюра (CheBurator) 03.12.11 05:04
елы-палы.. как-то у меня консоль запросов от Ivan T Berezdetsky весьма существенно отличается от сабжевой... а консоль - достаточно свежая, еще по моей проьбе Ivan T Berezdetsky вносил/попралвл допфункционал...
28. Юрий Осипов (yuraos) 04.12.11 00:38
Всем доброго времени суток!
Обновлены файлы поставки Консоль1CQA_ALL.rar и Консоль1CQA.rar.

Отчеты "Движения документа" и "Структура подчиненности"
(используются при обработке выбора из меню действий с объектом в таблице результатов запроса)
интегрированы в консоль, чтобы не зависеть от используемой конфигурации.

Отчет о движениях - в полном вариате (по регистрам, проводкам, записям ЖР и истории реквизитов).

При формировании структуры подчиненности для выборки подчиненых документов используются прямые запросы к базе.

Также оптимизировано поведение консоли для баз DBF в монопольном режиме:
При открытии обработка в блоке попытка-исключение пытается выполнить тестовый запрос:
select count(*) from 1susers.
Если при выполнении запроса исключения не возникает -
- значит в монопольном режиме прямые запросы работают (пользователь подсуетился для этого).
И поэтому ему не надо выводить никаких сообщений "о невозможности выполнить запрос".
29. Юрий Осипов (yuraos) 04.12.11 13:10
CheBurator пишет:

елы-палы.. как-то у меня консоль запросов от Ivan T Berezdetsky весьма существенно отличается от сабжевой... а консоль - достаточно свежая, еще по моей проьбе Ivan T Berezdetsky вносил/попралвл допфункционал...

Сначала мне по наследству досталась, повидимому, первоначальная версия
консольки от Дмитрия Ощепкова.
Я ее довольно сильно натюнил:
прикрутил режим подбора (нада было),
конструктор запросов (для развлекухи, но иногда полезен),
укладывание списков ссылок во впеменные таблицы (бывает полезно),
ну и всяких бантиков навязал интерфейсных (вроде выбора типа параметра в дереве).
При этом я старался сильно не "ломать" диалог и модуль.
Но недавно мне попалась вот эта версия консоли
http://www.1cpp.ru/forumfiles/Attachments/1CQA_001.zip
И мне сильно захотелось имитацию исполнения пакетного запроса
(эта фича меня щас здорово выручает, ломаю регистры перед обрезкой базы неподетски!).
Что бы объединить функционал двух версий обработок,
пришлось все довольно сильно все переделать (и диалоге, и в модуле).
Так что эта консоль довольно сильно отличается от исходных.
Но авторская информация в описании оставлена без изменений + добавлено от себя.
30. Саня Пупкин (pupkinSana) 06.12.11 12:00
77 forever

Нах мне 8ка если все инструменты для работы есть в семерке?
77+ООП = не надо мучать попу 8кой
31. Сергей Рудаков (fishca) 06.12.11 12:05
(30) если уж Орефков повернулся в сторону восьмерки, то все инструменты скоро будут и в восьмерке ;).
32. Юрий Осипов (yuraos) 06.12.11 17:59
(31) fishca,
ты имеешь наверное ввиду этот проект
http://snegopat.ru/ ???
ну будем надеяться,
что только расширением возможностей конфигуратора дело не закончиться
:)))))))))))
Эх, как я буду в 8-ке без своих любимых индексированных таблиц !!!
33. Юрий Осипов (yuraos) 06.12.11 18:03
yuraos пишет:

(31) fishca,
ты имеешь наверное ввиду этот проект
http://snegopat.ru/ ???
ну будем надеяться,
что только расширением возможностей конфигуратора дело не закончиться
:)))))))))))
Эх, как я буду в 8-ке без своих любимых индексированных таблиц !!!

Кстати всем рекомендую!
Вот здесь можно скачать бесплатную демо-версию:
Общедоступная демо-версия на базе релиза 1.1.1.2
34. Сергей Рудаков (fishca) 07.12.11 08:33
(32) тебе стандартных средств работы с индексами в восьмерке не хватает?
ТаблицаЗначений (ValueTable)
Индекс (IndexOf)
Синтаксис:
Индекс(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: СтрокаТаблицыЗначений. Строка таблицы значений, для которой нужно определить индекс.
Возвращаемое значение:
Тип: Число. Индекс указанной строки в коллекции. Если не найдено, то возвращается -1.
Описание:
Получает индекс строки в коллекции строк таблицы значений.
35. Юрий Осипов (yuraos) 07.12.11 19:39
fishca пишет:

(32) тебе стандартных средств работы с индексами в восьмерке не хватает?
ТаблицаЗначений (ValueTable)
Индекс (IndexOf)
Синтаксис:
Индекс(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: СтрокаТаблицыЗначений. Строка таблицы значений, для которой нужно определить индекс.
Возвращаемое значение:
Тип: Число. Индекс указанной строки в коллекции. Если не найдено, то возвращается -1.
Описание:
Получает индекс строки в коллекции строк таблицы значений.


fishca, ты наверное хотел не про эти индексы ;)))
а про вот эти (иначе - совсем не в тему попал):

1) ТаблицаЗначений (ValueTable)
Индексы (Indexes)
Использование:

Только чтение. 
Описание:

Тип: ИндексыКоллекции. 
Содержит коллекцию индексов таблицы значений.

2) ИндексыКоллекции (CollectionIndexes)
Добавить (Add)
Синтаксис:

Добавить(<Колонки>) 
Параметры:

<Колонки> (обязательный)

Тип: Строка. 
Строковое описание колонок индекса в виде: "Колонка1, Колонка2...". 
Возвращаемое значение:

Тип: ИндексКоллекции. 

Описание:

Добавляет индекс в список индексов коллекции.
...Показать Скрыть


и с 1cpp наверняка не работал...
... индексированная таблица там не просто таблица значений с индексами
для ускорения перебора строк, а нечто большее, вот почитай справку он-лайн:
http://www.1cpp.ru/docum/icpp/html/IndexedTable.html
36. EvgeniuXP EvgeniuXP (EvgeniuXP) 07.12.11 21:04
Спасибо, что не забываете про 1С:Программистов 7.7, которые мучаются и деваться не куда, отличная консоль запросов! пользуюсь постоянно ей!
37. Денис (KrakoZyabl) 08.12.11 13:30
38. Юрий Осипов (yuraos) 08.12.11 18:09
EvgeniuXP пишет:

Спасибо, что не забываете про 1С:Программистов 7.7, которые мучаются и деваться не куда, отличная консоль запросов! пользуюсь постоянно ей!


Да трудно про себя самого забыть!!!
;)))))))))))))
39. Андрей Казанцев (ander_) 10.12.11 11:38
Спасибо! И старая консоль не раз выручала, а с этой гораздо удобней.
40. Юрий Осипов (yuraos) 11.12.11 23:17
Всем доброе время суток!
Обновлены файлы поставки:
- Консоль1CQA_ALL.rar
- Консоль1CQA.rar
- FormEx1CPP.rar
Текущие изменения:
1) Добавлена обработка спец.комментариев в тексте запроса (для установки спец.опций выполнения запроса).
поддерживается обработка следующих спец.комментариев:
'--!ExecuteTransaction' выполнять в транзакции с фиксацией или откатом (в зависимости от ошибок);
'--!ExecuteRollback' выполнять в транзакции с последущим откатом
(для просмотра "результатов" запроса без изменения данных в базе);
подробности в макете "СпецКомметарииЗапроса" (можно вывести в табличный документ из диалога обработки).
2) Добавлен вывод в табличный документ описания обработки;
3) В меню действий с объектом по клику мышью добавлена
команда открытия объекта для редактирования в обработке
'Редактор Реквизитов' (автор Цылёв Владислав vet7777@mail.ru);
4) В файле FormEx1CPP.rar выложена подправленная версия класса "Общие.Форма.Привязка"
(устранена ошибка времени выполнения, проявляющаяся в терминале,
если установлен размер окна приложения в 'процентах от размера рабочего стола'
большое спасибо Pari за обсуждение проблемы);
41. Гость 13.12.11 16:44
42. Юрий Осипов (yuraos) 17.12.11 14:44
Всем доброе время суток!
Обновлены файлы поставки:
- Консоль1CQA_ALL.rar
- Консоль1CQA.rar
Текущие изменения:
1) Исправлен баг: не выводилось описание обработки (из-за неправильного указания имени макета с описанием).
2) Исправлен баг: не формировалось дерево документов при обработке команды меню действий со значением в ячейке таблицы результатов запроса (из-за неправильного вызова процедуры рекурсивного вывода на печать подчиненных документов).
43. Виталий Фоменков (VIC_2010) 23.12.11 15:08
Большое спасибо! Именно с этой обработки начал применять 1С++...
44. Юрий Осипов (yuraos) 23.12.11 16:31
(43) VIC_2010, пажалуста!
только посторожней с нею ...
... а то "хорошее" - это сильнодействующий наркотик.
К нему быстро привыкают!!!
;))))))))))))))))))))
45. Валентин Оплачено (Naked) 28.12.11 08:07
Довольно таки хорошая штука)))
народ, подскажите, может быть есть что либо в 7.7 для прямых запросов, похожее на 8шный конструктор запросов?
46. Юрий Осипов (yuraos) 28.12.11 08:41
Naked пишет:

Довольно таки хорошая штука)))

народ, подскажите, может быть есть что либо в 7.7 для прямых запросов, похожее на 8шный конструктор запросов?

Есть штатный убогий инструмент, для таких же штатных убогих запросов.
;))))
Есть так же примочки для запросов 1c++:

Вот эта примочка для режима конфигуратора:
http://infostart.ru/public/14933/?PAGEN_1=1#comm527164

Примочка для режима 1с-преприятие описана в этой статье и использавана в использавана данной консоли.
ЗЫ:
правда примочки эти работают только для баз SQL
:((((((((((
47. mayer mayer (mayer) 11.01.12 18:02
Очень удобная вещь! Благодарствую! :)
48. Ловыгин Антон (wunderland) 04.02.12 18:52
Подскажите, а обратиться в режиме прямого запроса к БухгалтерскимИтогам возможно?
Кажется, мне где-то попадался пример такого запроса, но через консоль не вижу как это сделать.
49. Юрий Осипов (yuraos) 05.02.12 09:15
(48) wunderland, обратиться к бухитогам конечно можно ....
.... но запрос придется полностью писать самому,
используя таблицы:
1SACCS (счета)
1SBKTTLC (итоги синтетические)
1SBKTTL (итоги аналитические по субконто)
1SENTRY (бухг. проводки) в соединении с таблицей 1SJOURN

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

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

Здесь кое-какая описаловка по структуре таблиц 1С:
http://www.script-coding.com/v77tables.html
http://oksla.narod.ru/1CTables.htm

Здесь кое-какие примеры по запросам к бухитогам:
http://www.1cpp.ru/forum/YaBB.pl?num=1151219880
http://www.1cpp.ru/forum/YaBB.pl?num=1211377364/15#15
Примеры чисто ознакомительные. Все нужно на самом деле анализировать и писать с нуля.

Во вложении - парсер файлов DD / DDS.
Наглядно показывает структуру всех таблиц базы, имена и типы полей.
Часто бывает полезен:
Я например ни за что бы не догодался, что остатки и обороты в таблицах
1SBKTTLC и 1SBKTTL (версия для dbf) хранятся в полях с типом char(15),
а в sql версии используется более "естественный" тип numeric(15.2)!

Успехов вам!!!
:)
Прикрепленные файлы:
VIEWDD.EXE.rar
50. Юрий Осипов (yuraos) 05.02.12 09:55
(48) wunderland, к стати о птичках
:)
если вы работаете в базе dbf
вам также будет полезна справка по
Microsoft Visual FoxPro 9.0.
если в базе sql то справка в
SQL Server Books Online

В прямых запросах часто приходися использовать встроенные функции,
в частности функции пребразования типов.
51. Ловыгин Антон (wunderland) 06.02.12 00:27
Спасибо, уважаемый за ответ, и за ссылки, и за парсер...
Ну нет, так нет - будем писать вручную.
Правда мне как-то привычнее в таком виде:

SELECT
СубконтоДт2 [ТМЦ $Справочник.ТМЦ]
, Сумма
, Количество
FROM $БИДвиженияССубконто.Основной(:НачДата,:КонДата~,,
(СчетДт = :СчетДт) and (СубконтоДт1 =:ВыбМестоХранения)) БИ

хотя привычнее, это громко сказано, я только осваиваю прямые запросы,
сам то я больше по 8-ке, а тут вот угараздило устроится на фирму где
на 7.7 еще все крутится и на переход незнаю когда решатся.
52. Ловыгин Антон (wunderland) 06.02.12 13:59
Отличная вещь - чем больше юзаю, тем больше нравится... Большое спасибо!!!
53. Андрей Гореликов (alon) 16.02.12 10:24
(51)Поддержу.
Очень не хватает возможности подключить класс-выполнитель аналогично qryConsole.
54. ппп ппп (ппп986) 11.07.12 20:14
Я конечно извиняюсь, но почему мне эта обработка выдает вот это?

ODBCDatabase:Соединение() error:
State IM001, native 0, message [Microsoft][Диспетчер драйверов ODBC] Драйвер не поддерживает данной функции
55. ппп ппп (ппп986) 11.07.12 22:08
может что-то делаю не так :(
56. ппп ппп (ппп986) 11.07.12 22:31
Может кто-нибудь даст
Microsoft OLE DB Provider for Visual FoxPro 9.0
57. Юрий Осипов (yuraos) 12.07.12 18:51
(54) ппп986, через ODBC к базе DBF почему-то подконнектиться не получается в запросах 1с++ ;) .
приходиться работать ч/з OLEDB...
...и по-моему где-то в статье должно было быть написано по этому поводу, что
для использования в базах dbf требуется установка драйвера OLEDB vfpoledb provider v9
58. Владимир Большов (BlueWind) 15.11.13 17:09
(48) wunderland,

Для запросов к бухитогам можно использовать класс ПрямойЗапрос, автор vandalsvq

Что он может:
- выполнение запроса на языке подобном 1Cv8
- выполнение запроса независимо от формата БД (DBF - 1sqlite, SQL - ODBCRecordset)
- наличие виртуальных таблиц, вроде Остатки, Обороты и ОстаткиОбороты по БухИтогам и Регистрам

Релиз:
http://www.1cpp.ru/forum/YaBB.pl?num=1273512019/1#1
Обсуждение:
http://www.1cpp.ru/forum/YaBB.pl?num=1285352210/0

Простой пример использования: Отображение остатков по товарам в форме списка справочника Номенклатура
//__________________________________________________________­____________
Процедура ОбновитьОстатки() //[+]sv 031112
//[!]sv 031112 Прямой запрос отрабатывает очень быстро, можно даже повесить динамическое обновление остатков на обработку ожидания

тзОстатки = СоздатьОбъект("ТаблицаЗначений");
флПрямойЗапрос = 1;
флПоказатьОстатки = 0;

т1 = _GetPerformanceCounter();
КонДата = КонецРассчитанногоПериодаБИ();
стрПредставлениеПериодаЗапроса = Строка(КонДата);

спСчетов = СоздатьОбъект("СписокЗначений");
спСчетов.ДобавитьЗначение(СчетПоКоду("214.1"));
спСчетов.ДобавитьЗначение(СчетПоКоду("214.2"));
спСчетов.ДобавитьЗначение(СчетПоКоду("214.3"));
стрСчета = СтрЗаменить(спСчетов.ВСтрокуСРазделителями(), """", "");
стрСчета = СтрЗаменить(стрСчета, ",", ", ");

мдв = СоздатьОбъект("MetaDataWork");
ЗапросСчет = "";
Для иС = 1 По спСчетов.РазмерСписка() Цикл
ЗапросСчет = ЗапросСчет + мдв.ЗначениеВСтрокуБД(спСчетов.ПолучитьЗначение(иС)) + ?(иС = спСчетов.РазмерСписка(),"","','");
КонецЦикла;
Состояние("Расчет итогов на "+стрПредставлениеПериодаЗапроса+" сч. "+стрСчета);

//Запрос
ПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
//ПрямойЗапрос.РежимОтладки = 1;
ПрямойЗапрос.УстановитьТекстовыйПараметр("КонДата", КонДата);
ПрямойЗапрос.УстановитьТекстовыйПараметр("ЗапросСчет", ЗапросСчет);

ТекстЗапроса = "
|ВЫБРАТЬ
| Субконто1 КАК [Субконто $Субконто]
|, Субконто1_вид КАК Субконто_вид
|, СУММА(КоличествоОстаток) КАК [Количество $Число.15.3]
|ИЗ
| $БИОстатки.Основной(:КонДата~
| ,
| ,(Номенклатура)
| ,(Количество)
| ,(Счет В (:ЗапросСчет))
| ,
| ) КАК Би
|
|СГРУППИРОВАТЬ
| Субконто1, Субконто1_вид
|";

тзОстатки = ПрямойЗапрос.Выполнить("ТаблицаЗначений",ТекстЗапроса);
ПрямойЗапрос = "";
ВремяЗапроса = _GetPerformanceCounter()-т0;
Сообщить("Время запроса: "+ВремяЗапроса);

Если тзОстатки.КоличествоКолонок() <> 0 Тогда
флПоказатьОстатки = 1;
КонецЕсли;
КонецПроцедуры
//__________________________________________________________­____________
Функция Остаток() //[+]sv 031112
_Остаток = 0;

Если флПоказатьОстатки = 1 Тогда
нстр = 0;
Если тзОстатки.НайтиЗначение(ТекущийЭлемент(), нстр, "Субконто") = 1 Тогда
_Остаток = тзОстатки.ПолучитьЗначение(нстр, "Количество");
КонецЕсли;
КонецЕсли;

Возврат _Остаток;
КонецФункции
59. Юрий Осипов (yuraos) 15.11.13 18:43
(58) BlueWind,
да я все время присматриваюсь к этому классу
...
все думаю заточить эту консоль под 1sqlite
и добавить подобие конструктора заготовок для запросов
но руки не доходят (поскольку я сейчас отошел от 1с-7.7)
---
но если руки дойдут - то заодно заточу ее и под этот класс.
;)
60. Сергей Толмачев (sss999) 21.11.13 13:52
подскажите почему не работает кейс

select distinct
СпрКонтр.Descr as Контрагент,
СпрДог.Descr as Договор,
case when debkred=1 then Покуп.Sp2201 else 5 end as СуммаПрод ,
Sp2203 as СуммаСебест
from
ra2207 as покуп
LEFT JOIN SC92 as СпрДог
LEFT JOIN SC134 as СпрКонтр
ON СпрКонтр.sp125 = СпрДог.ID
ON Покуп.SP2195 = СпрДог.ID
61. Юрий Осипов (yuraos) 21.11.13 14:11
(60)
доброго времени суток, sss999,
так попробуй
***
select distinct
СпрКонтр.Descr as Контрагент,
СпрДог.Descr as Договор,
case
when покуп.debkred=1 then Покуп.Sp2201
else 5
end as СуммаПрод ,
покуп.Sp2203 as СуммаСебест
from
ra2207 as покуп
LEFT JOIN SC92 as СпрДог
ON СпрКонтр.sp125 = СпрДог.ID
LEFT JOIN SC134 as СпрКонтр
ON Покуп.SP2195 = СпрДог.ID
***
1. пропущены псевдонимы таблиц в выделенных жырным местах
2. возможно провайдеру не понравились условия соединений все скопом в конце запроса
62. Юрий Осипов (yuraos) 21.11.13 14:13
(61)
а почему запрос с внутренними именами таблиц ?
я когда работал с прямыми запросами под 7.7,
то уже вовсю пользовался макроименами метапарсера 1СPP.
63. Юрий Осипов (yuraos) 21.11.13 14:26
(62)
сравни:
---
select distinct
СпрКонтр.Descr as Контрагент,
СпрДог.Descr as Договор,
case
when Покуп.debkred=1 then $Покуп.СуммаПрод
else 5
end as СуммаПрод,
$Покуп.СуммаСебест as СуммаСебест
from
$Регистр.Продажи as Покуп
LEFT JOIN $Справочник.Договора as СпрДог
ON $СпрКонтр.ОсновнойДоговор = СпрДог.ID
LEFT JOIN $Справочник.Контрагенты as СпрКонтр
ON $Покуп.Контрагент = СпрДог.ID
---
куда наглядней
64. Сергей Толмачев (sss999) 21.11.13 14:31
(63) yuraos, потмоу что делается к расным файлам дбв которые просто лежат в базе и в метаданных их нет.Не работает даже когда просто пишу CASE WHEN 1=1 THEN 0 ELSE 5 END
65. Юрий Осипов (yuraos) 21.11.13 14:41
(64) sss999,
что пишет, скриншот не выложишь???

ra2207 - регистр Продажи ?
Sp2201 - СуммаПродаж
Sp2203 - СуммаСебесттоимости - или как там эти ресурсы там называются (забыл уже) ??

дома проверю, вспомню 7.7 немного.
66. Сергей Толмачев (sss999) 21.11.13 14:48
пишет одно и тоже в принципе для любых ошибок Запрос >>> OLEDBCommand error:
FAILED! ICommandText::Execute(): Command contains unrecognized phrase/keyword.
67. Сергей Толмачев (sss999) 21.11.13 14:51
я пользуюсь консолью,здесь скачал пару разных результат один пробовал разные cрр тоже самое
68. Юрий Осипов (yuraos) 21.11.13 18:16
(66) sss999, да...подзабыл я все эти дела с foxpro.
---
дело в том, что конструкция
case when ... then ... else ... end
это из t-sql, а в foxpro в запросах вместо неё
приходится использовать функцию iif(,,)
69. Юрий Осипов (yuraos) 21.11.13 18:19
(68)
ниже указанный вариант у меня в консоли
выдал не "Command contains unrecognized phrase/keyword."
а более оптимистичное:
"File 'ra2207.dbf' does not exist."
***
select distinct
СпрКонтр.Descr as Контрагент,
СпрДог.Descr as Договор,
iif(покуп.debkred=1, Покуп.Sp2201, 5) as СуммаПрод,
покуп.Sp2203 as СуммаСебест
from
ra2207 as покуп
LEFT JOIN SC92 as СпрДог ON Покуп.SP2195 = СпрДог.ID
LEFT JOIN SC134 as СпрКонтр ON СпрКонтр.sp125 = СпрДог.ID
***
70. Сергей Толмачев (sss999) 22.11.13 09:50
Про такой вариант я и не подумал,спасибо дружище.А я находил тексты с прямыми запросами в инете и тут на старте и там вот писали case.
71. Сергей Толмачев (sss999) 22.11.13 12:08
(69) yuraos, а не знаешь по какому полю в справочнике договоры найти владельца контрагента
72. Сергей Толмачев (sss999) 22.11.13 14:17
(69) yuraos, с этим разобрался,parentext поле,теперь не работает конструкция with rollup ,хотя в "документации" я нашел что парень ее использовал ,я грешу на dll
73. Юрий Осипов (yuraos) 22.11.13 14:24
(71)(72)
со всякими конструкциями специфичными для t-sql надо аккуратней
скорее всего под foxpro они работать не будут.

в частности хинты для указания режима блокировок типа (NOLOCK)
foxpro не поддерживаются.
74. Юрий Осипов (yuraos) 22.11.13 14:27
вот полезный ресурс по 1cpp:
Архив всех chm
в архиве есть полезная статейка по прямым запросам в 1с-7.7
в файле с именем "TSQLInV7FirstSteps.chm"
разобраны примеры для SQL и DBF с рабором их отличиу
75. Юрий Осипов (yuraos) 22.11.13 14:32
(72)
во всяких примерах надо выяснять для какой они базы - SQL или DBF.
запросы решающие одно и тоже могут сильно отличатся в зависимости от типа базы.
---
еще могу посоветовать достать где-нибудь дистрибутив Visual-FoxPro
установить его и смотреть мануал, идущий с ним.
Мне этот мануал был часто полезен.
76. Сергей Толмачев (sss999) 22.11.13 14:33
вот хорошая статья и здесь он пишет вроде под fox так как указывает dbf файлы http://www.script-coding.com/Direct_queries.html#4.1.
77. Сергей Толмачев (sss999) 22.11.13 14:34
78. Сергей Толмачев (sss999) 22.11.13 14:43
(75) yuraos, с chm проблемы какие то ,они не открываются а предлагают скачаться заново
79. Юрий Осипов (yuraos) 22.11.13 15:15
(77) sss999,
это тоже хорошая статья, но не она.
там о поддержке прямых запросов именно компонентой 1cpp.dll
80. Юрий Осипов (yuraos) 22.11.13 15:22
(79)
впрочем она очень похожая.
похоже это более ранний вариант.
в архиве гораздо больше про DBF.
81. Юрий Осипов (yuraos) 22.11.13 15:23
(79)
не знаю почему у тебя chm не открываются.
у меня все нормально - и скачивается и открывается.
---
выкладываю скачанный архивчик.
Прикрепленные файлы:
1cpp.chm.zip
82. Сергей Толмачев (sss999) 26.11.13 11:09
Я тут все воюю с запросом,не могу во понять почему не работает конструкция Жур.IDDocDef = $ВидДокумента.Реализация,и в связи с эти хотелось бы понять как она вообще работает.Вот к этому запросу хотел прилепить,что бы потом еще добавить отбор по реквизиту который есть только у реализации.
select distinct
СпрКонтр.Descr as Контрагент,
СпрДог.Descr as Договор,
Sum(iif(покуп.debkred=1, Покуп.Sp2201, -Покуп.Sp2201) )as СуммаПродОстаток,
Sum(Покуп.Sp2201) as СуммаПрод,
Sum(Sp2203) as СуммаСебест,
Max(покуп.SP2198) as [док $Документ ]
from
ra2207 as покуп
LEFT JOIN SC92 as СпрДог
LEFT JOIN SC134 as СпрКонтр
ON СпрКонтр.id= СпрДог.parentext
ON Покуп.SP2195 = СпрДог.ID

left JOIN 1Sjourn as Жур

ON Жур.IDDoc = покуп.SP2198
Group by Контрагент,Договор
83. Юрий Осипов (yuraos) 26.11.13 12:29
(82) sss999,
$ВидДокумента.XXXX - это макро имя метапарсера 1cpp.
Метапарсер заменяет его на внутренний код вида документ с именем XXXX.

ты говорил, что у тебя база без метаданных, одни dbf-ники.

в этом случае скорее всего метапарсер выкинет ошибку
при формировании запроса провайдеру данных или заменит на что-то непотребное.
84. Сергей Толмачев (sss999) 26.11.13 12:36
(83) yuraos, а как это будет выглядеть без парсера?
85. Юрий Осипов (yuraos) 26.11.13 12:38
(82)
Если покуп.SP2198 - это поле реквизита регистра, имеющего тип "Документ" неопределенного вида,
то условие соединения
left JOIN 1Sjourn as Жур
ON Жур.IDDoc = покуп.SP2198

не верно.

содержимое такого поля формируется примерно как (IDDocDef + IDDoc).

Приду домой, пороюсь в старых примерах и отпишу как правильнее.
86. Юрий Осипов (yuraos) 26.11.13 12:49
ты архивчик 1cpp.chm.zip из поста (81)
загрузить смог?

только распакуй его перед тем как файлы *.chm открывать.
открываешь любой файл в архиве, например 1cpp.chm
и дальше роешься в мануале, как показано на скриншоте.
Прикрепленные файлы:
87. Юрий Осипов (yuraos) 26.11.13 12:55
(86)
розовым отмечена та самая статья "о первых шагах".

можно еще выбрать запросом
select * from 1Sjourn все строки и посмотреть
что там в поле IDDocDef хранится
...
но поди угадай какое значение ответствует "Реализации"
---
нескромный вопрос - а МД-ник то где ???
88. Сергей Толмачев (sss999) 26.11.13 13:37
(85) yuraos, может и не правильно но данные он показывает.а вот когда накладываю условие WHERE Жур.Date BETWEEN :НачДата~~ AND :КонДата~~ ниче не показывает,непонятно.Кстати я нашел что для dbf icase(,,,) )
89. Юрий Осипов (yuraos) 26.11.13 18:29
(88) sss999, действительно есть такая функция.
нашел, порывшись немного в мануале к foxpro.
;)
90. Юрий Осипов (yuraos) 26.11.13 18:31
(85)
я обычно по таким полям соединял примерно так
SELECT 
* 
FROM 
$Регистр.Покупатели as Рег
INNER JOIN
1sjourn as Жур on Жур.iddoc = RIGHT($Рег.КредДокумент,9)
WHERE
Жур.Date BETWEEN :НачДата~~ AND :КонДата~~
...Показать Скрыть

это к стати рабочий пример, тестировал на демо-базе типовой ТиС-7.7.
91. Юрий Осипов (yuraos) 26.11.13 18:38
(88)

когда накладываю условие WHERE Жур.Date BETWEEN :НачДата~~ AND :КонДата~~ ниче не показывает

трудно понять почему,
много не ясного:
1.
ошибки валит или пустую выборку возвращает ?
2.
что за поле покуп.SP2198 регистра,
что за регистр ra2207,
и вообще из какой конфигурации выдернуты dbf-ники ??
92. Юрий Осипов (yuraos) 26.11.13 18:42
(91)(88) sss999,
имей ввиду:
накладывая отбор по дате
WHERE Жур.Date BETWEEN :НачДата~~ AND :КонДата~~
в своем примере ты налагаешь условие
не на дату документа, двигавшего по регистру
а на дату документов, на которые ссылается значение в поле покуп.SP2198 регистра.
93. Сергей Толмачев (sss999) 26.11.13 18:50
Ну да я так и хотел,это кредитный документ,конфа не знаю,самописная походу.Регистр покупатели.Я на работе разбирался сидел там с типами, всякой ерундой,типа условия по индексам.Ладно я завтра еще посмотрю.
94. Сергей Толмачев (sss999) 27.11.13 09:34
(90) yuraos, мда..и зачем райт 9,кстати и соединения как то странно отрабатывают,если лефт показывает а инне нет мне вот непонятно как так
95. Сергей Толмачев (sss999) 27.11.13 09:47
(90) yuraos, чудеса,добавил райт и отбор заработал,раньше выдавал пусто
96. Юрий Осипов (yuraos) 27.11.13 11:34
(94) sss999,
советую о хранении данных в 1с-7.7 почитать поподробней,
тогда многое будет понятней...
:)
---
Вкратце:
1)
поле ID (ссылка на справочник конкретного вида)
поле IDDOC (ссылка на документ конкретного вида)
это строковые значения типа Char9 (строка длины 9).
2)
В полях реквизитов типа "Справочник" или "Документ" (неопределенного вида)
хранится строковое значение типа Char13,
которое образуется из строкового 36-ричного представления
внутреннего кода вида справочника или документа (значение Char4)
и самого значения ссылки (значение Char9) - итого получается строка Char13.
97. Юрий Осипов (yuraos) 27.11.13 11:39
(96)
таким образом конструкция
RIGHT(<ЗначениеДокумент>, 9)
выделяет значение ссылки - 9 правых символов
- то что надо для соединения с таблицой 1sjourn
98. Сергей Толмачев (sss999) 28.11.13 07:45
(96) yuraos, блин это слишком сложно,эта такая структура для фокспро или для всех, непонятно.У меня щас проблема не знаю как итоги посчитать ,WITH ROLLUP не работает как я понял на дбф.
99. Сергей Толмачев (sss999) 28.11.13 10:46
(97) yuraos, в общем я решил юнионом получить итоги,теперь проблема в том что я добавляю второй запрос без группировки по договору и вот не знаю как сделать что бы туда он выбирал пустые договора
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа