7.7 Проблема с прямым запросом к MSSQL базе 1С-ки

Тема в разделе "Обмен данными в "1С:Предприятие 7.7"", создана пользователем Art-SiteDesign, 14 июн 2013.

  1. TopicStarter Overlay
    Art-SiteDesign
    Offline

    Art-SiteDesign

    Регистрация:
    14 июн 2013
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Добрый день уважаемые формчане!
    С недавнего времени столкнулся с такой проблемой:
    Необходимо прямым запросом к MSSQL базе 1с (комплексная 7.7) получить информацию о дебиторской задолженности по каждому контрагенту.
    Если быть точнее, необходимо после того как будет выбран контрагент,
    зная его id можно было вывести табличку: дата реализации, сумма реализации, сумма задолженности и сумма оплаты (все это в зависимости от текущей даты)
    На данный момент мне известны следующие данные:
    1) Необходимо искать дебитовое сальдо по 62 счету...
    2) Есть в MSSQL такие прекрасные таблицы, по которым и надо как-то формировать запрос:

    #==TABLE no 560 : Отбор проводок по субконто
    # Name |Descr |SQLTableNam|RecordLock
    T=1SSBSEL |Отбор проводок по субконто |_1SSBSEL |
    #-----Fields-------
    # Name |Descr |Type|Length|Precision
    F=ROW_ID |Row ID |I |0 |0
    F=SBKINDID |Sb Kind ID of select|I |0 |0
    F=VAL |Value |C |9 |0
    F=DOCID |Doc ID |C |9 |0
    F=DATE_TIME_DOCID |Date |C |23 |0
    F=NUMBER |Prov number |I |0 |0
    F=CORNO |Correspond number |I |0 |0

    #==TABLE no 552 : Счета
    # Name |Descr |SQLTableNam|RecordLock
    T=1SACCS |Счета |_1SACCS |R
    #-----Fields-------
    # Name |Descr |Type|Length|Precision
    F=ROW_ID |Row ID |I |0 |0
    F=ID |Account Id |C |9 |0
    F=PLANID |Plan Id |I |0 |0
    F=SCHKOD |Account code(number)|C |8 |0
    F=SCHIM |Account description |C |25 |0
    F=SCHV |Flag Currency enable|L |0 |0
    F=SCHKOL |Flag Amount enable |L |0 |0
    F=SCHSINGLE |Flag no need corresp|L |0 |0
    F=ISFOLDER |Flag Have child acco|L |0 |0
    F=ISMARK |Flag Object is Marke|L |0 |0
    F=LEVEL_ |Level of Account |S |0 |0
    F=MDID |Metadata Id |I |0 |0
    F=ACTIVE |Flag Active |Y |0 |0
    F=VERSTAMP |Version stamp |I |0 |0
    F=SC0 | |I |0 |0
    F=OSC0 | |Y |0 |0
    F=FSC0 | |Y |0 |0
    F=SC1 | |I |0 |0
    F=OSC1 | |Y |0 |0
    F=FSC1 | |Y |0 |0
    F=SC2 | |I |0 |0
    F=OSC2 | |Y |0 |0
    F=FSC2 | |Y |0 |0
    F=SP7737 |(P)ПолнНаименование |M |0 |0

    #==TABLE no 554 : Проводки
    # Name |Descr |SQLTableNam|RecordLock
    T=1SENTRY |Проводки |_1SENTRY |
    #-----Fields-------
    # Name |Descr |Type|Length|Precision
    F=ROW_ID |Row ID |I |0 |0
    F=DOCID |Document Id |C |9 |0
    F=NUMBER |Prov number |I |0 |0
    F=CORNO |Correspond number |I |0 |0
    F=DATE_TIME_DOCID |date+time+docid |C |23 |0
    F=ACCDTID |AccountDt Id |C |9 |0
    F=ACCKTID |AccountKt Id |C |9 |0
    F=SUM_ |Prov sum |N |14 |2
    F=CURRID |Currency Id |C |9 |0
    F=CURSUM |Prov currency sum |N |14 |2
    F=AMOUNT |Prov amount |N |14 |3
    F=PROVKIND | |C |1 |0
    F=ACTIVE | |C |1 |0
    F=DTFLAGS | |Y |0 |0
    F=KTFLAGS | |Y |0 |0
    F=DOCLINENO |Doc line number |I |0 |0
    F=SP7734 |(P)СодержаниеПроводк|C |50 |0
    F=SP7735 |(P)НомерЖурнала |C |2 |0
    F=SP7736 |(P)РазделительУчета |C |9 |0
    F=SP27758 |(P)ПервичныйДокумент|C |25 |0
    F=DTSC0 | |C |9 |0
    F=VDTSC0 | |I |0 |0
    F=ODTSC0 | |Y |0 |0
    F=DTSC1 | |C |9 |0
    F=VDTSC1 | |I |0 |0
    F=ODTSC1 | |Y |0 |0
    F=DTSC2 | |C |9 |0
    F=VDTSC2 | |I |0 |0
    F=ODTSC2 | |Y |0 |0
    F=KTSC0 | |C |9 |0
    F=VKTSC0 | |I |0 |0
    F=OKTSC0 | |Y |0 |0
    F=KTSC1 | |C |9 |0
    F=VKTSC1 | |I |0 |0
    F=OKTSC1 | |Y |0 |0
    F=KTSC2 | |C |9 |0
    F=VKTSC2 | |I |0 |0
    F=OKTSC2 | |Y |0 |0

    Если кто может, помогите пожалуйста разобраться что и как....
    Если можно то пример запроса с выводом долга по реализациям для определенного контрагента.
    Дело в том, что в 1с я плохо разбираюсь и такие понятия как счет, сальдо и.т.д. ля меня темный лес =(
    Заранее спасибо!!!
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В комплексной нужно обращаться не к БИ, а к регистрам. Там достоверная информация.
    З/Ы чем не устраивает запрос средствами самой 1с?
  3. TopicStarter Overlay
    Art-SiteDesign
    Offline

    Art-SiteDesign

    Регистрация:
    14 июн 2013
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Дело в том что запрос формируется очень долго...а для задачи необходимо частое обновление....
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    зачем огород городить, когда можно использовать готовые решения. Попробуйте rainbow.dll или 1CPP.dll
  5. TopicStarter Overlay
    Art-SiteDesign
    Offline

    Art-SiteDesign

    Регистрация:
    14 июн 2013
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Господа, удалось найти обработку в 1с, которая формирует данные именно в том виде в котором мне надо! Но проблема в том что не получается расшифровать код 1С и на его основе составить правильный SQL запрос.....может кто сможет помочь???? Буду оооочень признателен!!!!!
    Итак, вот код 1С обработки:

    Код:
    Перем Реализ;
    Перем КакойСпр;
    Функция ВзятьКонтекст(Конт)
    Возврат Конт;
    КонецФункции // глВзятьКонтекст()
    Функция ПолучитьНазваниеБезТочки(иф)
    Если Найти(иф, ".") <> 0 Тогда
    // найден разделитель
    Возврат Лев(иф, Найти(иф, ".") - 1);
    Иначе
    Возврат СокрЛП(иф);
    КонецЕсли;
    КонецФункции // ПолучитьИНН()
    Процедура ЗафиксироватьЗапускОтчета()
    Путь	 = "";
    ИмяФайла = "";
    ФайлОтчета = РасположениеФайла(Путь,ИмяФайла);
    ИмяФайла= ПолучитьНазваниеБезТочки(ИмяФайла);
    Часов = 0; Минут = 0; Секунд = 0;
    ТекущееВремя(Часов,Минут,Секунд);
    ИмяФайлаВыгрузки = КаталогИБ() + "ExtForms\"+"Отчеты\"+глПользователь+"("+ИмяФайла+"("+часов+"-"+минут+"-"+секунд+".txt"; 
    Текст = СоздатьОбъект("Текст");
    Текст.Очистить();
    Текст.Записать(ИмяФайлаВыгрузки);
    
    КонецПроцедуры
    Процедура НайтиНезакрытвеРеализации()
    ТаблВозвратов=СоздатьОбъект("ТаблицаЗначений");
    ДатаНачала0 = '01.01.2008';
    // ДатаОконч = ТекущаяДата();
    ДатаОконч = ДатаНачала;
    ТекстЗапроса = "
    |Период С ДатаОконч По ДатаОконч;
    |ДокРеал = Регистр.ДолгПоДокументу.ДокРеализация;
    |Контрик = Регистр.ДолгПоДокументу.Контрагент;
    // |ДатаДока = Регистр.ДолгПоДокументу.Дата;
    |ДатаДока = Регистр.ДолгПоДокументу.ДокРеализация.ДатаДок;
    |НезакрытаяСумма = Регистр.ДолгПоДокументу.Сумма;
    //|Группировка ДокРеал без групп;
    |Функция ОстатокПоДокументу = КонОст(НезакрытаяСумма);
    |Группировка ДокРеал упорядочить по ДокРеал.ДатаДок без групп;
    //|Группировка ДокументДвижения;
    |Условие (Контрик в ВыбКлиент);
    //|Функция ДолгПоДокументу = приход(Доход);
    |";
    Зап=СоздатьОбъект("Запрос");
    Если Зап.Выполнить(ТекстЗапроса) = 0 Тогда
    Сообщить("Запрос не выполнен");
    Возврат;
    КонецЕсли;
    Реализ = СоздатьОбъект("ТаблицаЗначений");
    Реализ.УдалитьСтроки();
    Зап.Выгрузить(Реализ,1,0);
    Реализ.Сортировать("ДатаДока-");
    КонецПроцедуры
    Процедура  ЗаполнитьСписокКонтрагентов()
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать12)
    |Обрабатывать НеПомеченныеНаУдаление;
    |Контрагент = Справочник.Адреса.ТекущийЭлемент.Владелец;
    |Адрес = Справочник.Адреса.ТекущийЭлемент;
    |Территория = Справочник.Адреса.ТорговыйПредставитель;
    |Отдел = Справочник.Адреса.ТорговыйПредставитель.Отдел;
    |Группировка Контрагент без групп;
    |Условие (Территория в ВыбТорг);
    |Условие (Отдел в ВыбОтдел);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    // Запрос.Выгрузить(ВыбКлиент);
    Пока Запрос.Группировка(1)=1 Цикл
    ВыбКлиент.ДобавитьЗначение(Запрос.Контрагент,);
    
    КонецЦикла;
    КонецПроцедуры
    Функция НалБезнал(Док)
    Возв = "бнал";
    ДокПодч = СоздатьОбъект("Документ");
    ДокПодч.ВыбратьПодчиненныеДокументы(,,Док.ТекущийДокумент());
    Пока ДокПодч.ПолучитьДокумент() = 1 Цикл
    Если ДокПодч.Вид() <> "Доверенность" Тогда
    Продолжить
    КонецЕсли;
    Если ДокПодч.ПометкаУдаления() = 1 Тогда
    Продолжить
    КонецЕсли;
    ДокПодч.ВыбратьСтроки();
    Пока ДокПодч.ПолучитьСтроку() = 1 Цикл
    Если НРег(СокрЛП(ДокПодч.НаименованиеТМЦ)) = "наличные деньги" Тогда
    ВОзврат "нал";
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    Возврат Возв;
    КонецФункции
    //*******************************************************************************
    Процедура Сформировать()   
    // ЗафиксироватьЗапускОтчета();
    Если ВыбКлиент.РазмерСписка() = 0 Тогда
    ВыбКлиент.УдалитьВсе();
    ЗаполнитьСписокКонтрагентов();
    КонецЕсли;
    
    Т = СоздатьОбъект("Таблица");
    БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
    // Реализ = СоздатьОбъект("Документ.Реализация");
    Докум = СоздатьОбъект("Документ");
    ДатаНачала0 = '01.01.2006';
    НайтиНезакрытвеРеализации();
    Если ПустоеЗначение(ВыбКлиент)=1 Тогда
    БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты,,1,1);
    Иначе												 
    БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты,ВыбКлиент);
    КонецЕсли;
    БухИт.ВыполнитьЗапрос(ДатаНачала,ДатаНачала,"62","00,50,51,71,76,90,91",,1,"Операция",1);
    ИтНак=0;
    ИтОпл=0;
    ИтДол=0;
    ИтПро=0;
    Ит2007=0;
    ИтДлгПоОтчету=0;
    ИтОплатаПоОтчету=0;
    
    Т.ИсходнаяТаблица("Таблица");
    Т.ВывестиСекцию("Отчет");
    БухИт.ВыбратьСубконто(1);
    Флаг = 0;
    //Реализ.ВыбратьСтроку();
    //Возврат;
    НомерСтроки=4;
    Пока БухИт.ПолучитьСубконто(1) =1 Цикл
    Конт = БухИт.Субконто(1);
    Глубина = Конт.ГлубинаКредита;
    НаимКлиент=Конт.Наименование;
    ТоргПр=Конт.Родитель;
    КАМ=Конт.КАМ;
    ОбщЗад=?(БухИт.СКД()<>0,БухИт.СКД(),0);
    Аванс= БухИт.СКК();
    Если Аванс>0 Тогда
    
    
    
    ОбщЗад=- Аванс ;
    ИтДол=ИтДол+ОбщЗад;
    
    
    Если БезДок<>1 Тогда
    
    
    // Т.ВывестиСекцию("Клиент");
    //  Т.Область("R"+НомерСтроки+"C10").ЦветФона(255);
    
    НомерСтроки= НомерСтроки+1;
    
    КонецЕсли;
    Продолжить;
    КонецЕсли;
    
    Если ОбщЗад=0 Тогда
    Продолжить;
    КонецЕсли;
    Флаг=1;
    ИтОтгружено=0;
    ИтОплачено=0;
    ИтДолг=0;
    ИтПроср=0;
    Дол2007=0;
    ТмпДолг=ОбщЗад;
    
    Если БезДок<>1 Тогда
    
    
    //  Т.ВывестиСекцию("Клиент");
    // Т.Область("R"+НомерСтроки+"C10").ЦветФона(255);
    НомерСтроки= НомерСтроки+1;
    
    
    
    
    КонецЕсли;
    // ИтДлгПоОтчету= ИтДлгПоОтчету+ОбщЗад;
    stДолг2007=0;
    
    Реализ.ВыбратьСтроки();
    Пока Реализ.ПолучитьСтроку()=1 Цикл
    
    Если Реализ.Контрик<>Конт Тогда
    Продолжить;
    КонецЕсли;
    
    Если ПустоеЗначение(Реализ.ДокРеал)=1  Тогда
    Продолжить;
    КонецЕсли;
    Если Реализ.ДокРеал.Вид()="Реализация" Тогда 
    ПечСум=Реализ.ДокРеал.Итог("Сумма")+?(Реализ.ДокРеал.СуммаВклНП=1,0,Реализ.ДокРеал.Итог("СуммаНП"))+?(Реализ.ДокРеал.СуммаВклНДС=1,0,Реализ.ДокРеал.Итог("СуммаНДС"));
    Иначе
    Если Реализ.ДокРеал.Вид()="ЗаказПоставщику"  Тогда
    // Сообщить("Не правильно введен документ"+" "+Реализ.ДокРеал+" "+" "+"по покупателю"+" "+Реализ.ДокРеал.Контрагент+"  "+"Обратитесь к операторам на склад");
    Продолжить;
    Иначе
    ПечСум=Реализ.ДокРеал.Итог("СуммаРуб");
    КонецЕсли;
    КонецЕсли;
    Реализац="Накладная № "+Реализ.ДокРеал.НомерДок+"  от "+СокрЛП(Реализ.ДокРеал.ДатаДок);
    Адрес=Реализ.ДокРеал.Договор.Наименование;
    ГлубинаДог = Реализ.ДокРеал.Договор.ГлубинаКредита;
    
    
    
    ЧерБел = "1";
    Если Лев(Реализ.ДокРеал.НомерДок,1) = "0" Тогда
    ЧерБел = "0";
    КонецЕсли;
    НалБезнал = НалБезнал(Реализ.ДокРеал);
    
    
    СумОпл=0;
    
    СумОпл=ПечСум-Реализ.ОстатокПоДокументу;
    
    
    
    Знамя = 0;
    Если ПечСум-СумОпл>0 Тогда
    Если ТмпДолг>=ПечСум-СумОпл Тогда
    ТмпДолг=ТмпДолг - ПечСум + СумОпл;
    Иначе
    Если ТмпДолг = 0 Тогда
    Прервать;
    КонецЕсли;
    
    СумОпл = ПечСум - ТмпДолг;//1
    Знамя = 1;
    КонецЕсли;
    СуммаДолга=ПечСум-СумОпл;
    ДниПроср=Число(ДатаНачала-Реализ.ДокРеал.ДатаДок)-ГлубинаДог;
    СуммаПроср = ?(ДниПроср>0,СуммаДолга,0);
    
    
    Если ВариантОтчета.ТекущаяСтрока() = 2 Тогда
    Если (СуммаПроср > 0) И (ГлубинаДог <= 2) Тогда
    Иначе
    Продолжить
    КонецЕсли;
    
    ИначеЕсли ВариантОтчета.ТекущаяСтрока() = 3 Тогда
    
    Если (ГлубинаДог >=2) И (ЧерБел = "0") Тогда
    Иначе
    Продолжить
    КонецЕсли;
    КонецЕсли;
    
    ИтОтгружено=ИтОтгружено+ПечСум;
    ИтОплачено=ИтОплачено+СумОпл;//1
    ИтДолг=ИтДолг+СуммаДолга;
    ИтПроср=ИтПроср+СуммаПроср;
    ИтДлгПоОтчету=ИтДлгПоОтчету+СуммаДолга;
    
    Если Реализ.ДокРеал.ДатаДок<'01.01.08' Тогда
    
    stДолг2007=stДолг2007+СуммаПроср;
    
    КонецЕсли;
    
    
    Если БезДок<>1 Тогда
    
    
    // Т.Область(НомерСтроки,10).ЦветФона(255);
    
    Если Реализ.ДокРеал.Вид()="Реализация" Тогда 
    ТекРеализац=Реализац;
    ДниПроср=Число(ДатаНачала-Реализ.ДокРеал.ДатаДок)-ГлубинаДог;
    
    Иначе
    ТекРеализац=Реализ.ДокРеал.Комментарий;
    ДатаПоДокВводОст= Дата(Лев(Прав(Реализ.ДокРеал.Комментарий,9),8));
    
    ДниПроср=Число(ДатаНачала-ДатаПоДокВводОст)-ГлубинаДог;
    
    
    КонецЕсли;
    
    //
    //Если Реализ.ДокРеал.Договор.ЗапретОтгрузки=1   Тогда
    //
    // Т.Область("R"+НомерСтроки+"C10").ЦветФона(255);
    //
    //КонецЕсли;
    
    НомерСтроки= НомерСтроки+1;
    Т.ВывестиСекцию("Документ");
    КонецЕсли;
    
    Если Знамя = 1 Тогда
    Прервать;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Если Флаг=1 Тогда
    Флаг=0;
    
    Дол2007=stДолг2007;
    // Дол2007=ОбщЗад-ИтДолг;
    
    Если БезДок<>1 Тогда
    
    // Т.ВывестиСекцию("Итого");
    НомерСтроки= НомерСтроки+1;
    
    Иначе
    //  Т.ВывестиСекцию("Итого2");
    НомерСтроки= НомерСтроки+1;
    
    КонецЕсли;
    
    
    ИтНак=ИтНак+ИтОтгружено;
    ИтОпл=ИтОпл+ИтОплачено;
    ИтДол=ИтДол+ИтДолг;
    ИтПро=ИтПро+ИтПроср;
    Ит2007=Ит2007+Дол2007;
    КонецЕсли;
    КонецЦикла;
    Т.ВывестиСекцию("Подвал");
    Т.Опции(0,0,3,0,0);
    Т.ПараметрыСтраницы(2);
    Т.ТолькоПросмотр(1);
    Т.ОбластьПечати(1);
    Т.Показать("Дебиторская задолжннность","");
    КонецПроцедуры  // Сформировать
    //********************************************************************************
    Процедура СформироватьПоЗаблок()
    НовыйСписок=СоздатьОбъект("СписокЗначений");
    Контрик=СоздатьОбъект("Справочник.Контрагенты");
    Дог=СоздатьОбъект("Справочник.Договоры");
    Для Сч = 1 По ВыбКлиент.РазмерСписка() Цикл
    Контр = ВыбКлиент.ПолучитьЗначение(Сч);
    Если Контр.ЭтоГруппа() = 1 Тогда
    
    Контрик.ИспользоватьРодителя(Контр,);
    Контрик.ВыбратьЭлементы();
    Пока Контрик.ПолучитьЭлемент()=1 Цикл
    Дог.ИспользоватьВладельца(Контрик);
    Дог.ВыбратьЭлементы();
    Пока Дог.ПолучитьЭлемент()=1 Цикл
    Если Дог.ЗапретОтгрузки=1  Тогда
    НовыйСписок.ДобавитьЗначение(Контрик.ТекущийЭлемент());
    Продолжить;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    Иначе
    
    Дог.ИспользоватьВладельца(Контрик);
    Дог.ВыбратьЭлементы();
    Пока Дог.ПолучитьЭлемент()=1 Цикл
    Если Дог.ЗапретОтгрузки=1  Тогда
    НовыйСписок.ДобавитьЗначение(Контрик.ТекущийЭлемент());
    Продолжить;
    КонецЕсли;
    КонецЦикла;
    
    
    
    КонецЕсли;
    КонецЦикла;
    Если НовыйСписок.РазмерСписка()>0 Тогда
    ВыбКлиент.УдалитьВсе();
    НовыйСписок.Выгрузить(ВыбКлиент,,);
    
    КонецЕсли;
    Если ВыбКлиент.РазмерСписка()>0 Тогда
    Сформировать();
    Иначе
    Сообщить("Необходимо выбрать контрагента или группу контрагентов");
    КонецЕсли;
    
    
    КонецПроцедуры
    Процедура ПодборТоргового()
    Парам = ВзятьКонтекст(Контекст);
    ОткрытьПодбор("Справочник.ТорговыеПредставители", "ДляВыбора", Парам, 1);
    КакойСпр="ТорговыеПредставители";
    КонецПроцедуры	 
    //******************************************************************************
    Процедура ПодборОтдела()
    Парам = ВзятьКонтекст(Контекст);
    ОткрытьПодбор("Справочник.Отделы", "ДляВыбора", Парам, 1);
    КакойСпр="Отделы";
    КонецПроцедуры
    Процедура ОбработкаПодбора(Элем, Конт)
    Если КакойСпр="ТорговыеПредставители" Тогда
    ВыбТорг.ДобавитьЗначение(Элем);
    ИначеЕсли КакойСпр="Отделы" Тогда
    ВыбОтдел.ДобавитьЗначение(Элем);
    ИначеЕсли КакойСпр="Контрагенты" Тогда
    ВыбКлиент.ДобавитьЗначение(Элем);
    ВыбКлиент.ТекущаяСтрока(ВыбКлиент.РазмерСписка());
    //ИначеЕсли КакойСпр="Номенклатура" Тогда
    // ВыбТовар.ДобавитьЗначение(Элем);
    //
    КонецЕсли;
    КонецПроцедуры
    Процедура ПриОткрытии()
    ДатаНачала = ТекущаяДата();
    ДатаКонца = ТекущаяДата();
    КонецПроцедуры
    Процедура УдалитьИзСпискаКлиент()
    Если ВыбТорг.ТекущаяСтрока()=0
    Тогда Предупреждение ("Не выделен ни один элемент списка Клиентов!");
    Иначе ВыбТорг.УдалитьЗначение(ВыбТорг.ТекущаяСтрока());
    КонецЕсли;
    КонецПроцедуры
    Процедура УдалитьИзСпискаКлиент1()
    Если ВыбОтдел.ТекущаяСтрока()=0
    Тогда Предупреждение ("Не выделен ни один элемент списка Клиентов!");
    Иначе ВыбОтдел.УдалитьЗначение(ВыбОтдел.ТекущаяСтрока());
    КонецЕсли;
    КонецПроцедуры
    Процедура ПодборКлиент()
    Перем Фрм;
    Перем Тек;
    Если ВыбКлиент.РазмерСписка()>0 Тогда
    Тек=ВыбКлиент.ПолучитьЗначение(ВыбКлиент.ТекущаяСтрока());
    КонецЕсли;
    ОткрытьПодбор("Справочник.Контрагенты","ДляВыбора",Фрм,0,Тек);
    Фрм.ВыборГруппы(1);
    КакойСпр="Контрагенты";
    //Парам = ВзятьКонтекст(Контекст);
    //ОткрытьПодбор("Справочник.Контрагенты","ДляВыбора", Парам, 1);
    //КакойСпр="Контрагенты";
    КонецПроцедуры
    ////********************************************************************************
    //Процедура ОбработкаПодбора(Значен,КонтФормы)
    // ВыбКлиент.ДобавитьЗначение(Значен);
    // ВыбКлиент.ТекущаяСтрока(ВыбКлиент.РазмерСписка());
    //КонецПроцедуры
    ////********************************************************************************
    Процедура УдалитьИзСпискаКлиент2()
    Если ВыбКлиент.ТекущаяСтрока()=0
    Тогда Предупреждение ("Не выделен ни один элемент списка Клиентов!");
    Иначе ВыбКлиент.УдалитьЗначение(ВыбКлиент.ТекущаяСтрока());
    КонецЕсли;
    КонецПроцедуры
    ////********************************************************************************
    Процедура ОчиститьСписокКлиент()
    ВыбКлиент.УдалитьВсе();
    КонецПроцедуры
    //*******************************************
    // Процедура генерации запроса Сформировать12.
    //
    ВариантОтчета.ДобавитьЗначение("Стандарт");
    ВариантОтчета.ДобавитьЗначение("глубина кредита<=2 кд, сумма просрочки>0");
    ВариантОтчета.ДобавитьЗначение("чб = ч, глубина кредита>=2");
    ВариантОтчета.ТекущаяСтрока(1);
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Какой-то странный отчет. Конфигурация самописка что-ли? Тут и обращение к БИ и к регистрам... Причем отчет писал какой-то варвар. Который не задумывался над тем что его код кто-то будет читать.
    1) Если на форме выбран элемент справочника/группа контрагентов делаем запрос (создаем фильтр по выборке)
    2) Делаем запрос к регистру ДолгПоДокументу. Смотрим по каким документам долги...
    3) Запрос к БИ 62 в корреспонденции счетов... (ищем авансы???)
    выводим отчет...

    Если вы все это переварите прямыми запросами из сторонней программы - готов проставиться вискарем.
  7. TopicStarter Overlay
    Art-SiteDesign
    Offline

    Art-SiteDesign

    Регистрация:
    14 июн 2013
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Добрый день! С горем пополам мне удалось вытащить данный отчет на уровне SQL, если вам интересно, могу скинуть вам свой код на PHP.... Если что, пишите в скайп Art-SiteDesign ......

Поделиться этой страницей