|
v7: Запрос по обработке документов... Ø (длинная ветка 27.02.2013 18:51) | ☑ | ||
---|---|---|---|---|
0
bananan
15.02.13
✎
17:57
|
Значит так, написал (ко нечно же с вашей помощью) скрипт который проверяет расходные документы за указанный период и если в документе находит "ошибку" (скорее неточность) - то он и сообщает этот документэ, эго автора строку документа товар и выдает описание ошибки...
ТАк вот документы за ноябрь прошлого года - скрипт обрабатывал 13,5 минут - это долго... как бы оптимизировать работу чтобы скрипт работал раза в 2-3 быстрее? |
|||
1
Rie
15.02.13
✎
17:59
|
(0) А что за скрипт-то? Как он выглядит?
|
|||
2
aka MIK
15.02.13
✎
18:00
|
(0) Подзабить
|
|||
3
bananan
15.02.13
✎
18:00
|
Показыва весь код:
// Lita-M Перем ПечататьЧек Экспорт; Перем АвтоЯщик Экспорт; Перем curUsers Экспорт; Перем ДрайверККМЗагружен Экспорт; Перем ДрайверККМустановлен Экспорт; Перем ДоступАдмина Экспорт; Перем ДоступМенеджера Экспорт; Перем ДоступКадры Экспорт; Перем ДоступБуха Экспорт; Перем ДоступБухаФ Экспорт; перем scanner Экспорт; перем drvFPL Экспорт; Перем OPOSDatecs Экспорт; Перем СписокИсторииОбъектов Экспорт; Перем ПослОткрДок Экспорт; Перем ТекущаяИБ Экспорт; Перем обЧат Экспорт; // глобальная Перем logJournal Экспорт; // глобальная Перем lockObjects Экспорт; // глобальная //(с) ABBYY 1999 Перем ВсеВыбрано Экспорт; Перем Пользователь Экспорт; Перем Да Экспорт; Перем Нет Экспорт; Перем Гривня Экспорт; Перем ЧислоСтрок Экспорт; Перем глГрупповаяОбработка Экспорт; // (c) 1C Российские настройки Перем глРасшифровка Экспорт; Перем глФлагРасшифровки Экспорт; Перем глТаблица Экспорт; Перем глОбновить Экспорт; Перем глТаблицаСчетов Экспорт; Перем СчетаОстатковВВалюте Экспорт; Перем СчетаЗадолженностейВВалюте Экспорт, НеМонетарныеСчета Экспорт; // ЗП Перем глДатаПереходаНаНДФЛ Экспорт; Перем глДатаНачалаРасчетаИндексации Экспорт; Перем ОсновнаяЗП Экспорт; Перем глОбщиеУстановки Экспорт; Перем Класс8 Экспорт; Перем Класс9 Экспорт; Перем Класс89 Экспорт; Перем глИспользуетсяразделительУчета Экспорт; Перем глТбИндексИнфляции Экспорт; Перем глСписокОшибокОкругления Экспорт; Перем СостояниеУРБД; Перем глВсеВыбрано Экспорт; Перем vk_hook Экспорт; // ЗП // Логгер Перем глКомпонента1cpp Экспорт; //для единого взноса Перем глДатаПереходаНаЕСВ Экспорт; Перем ФильтрЖурнСпр Экспорт; // =============================== Функция глЕстьРеквизитШапки(ИмяРеквизита, ВидДокумента) Экспорт Перем Реквизит; Если (ПустоеЗначение(ВидДокумента) = 1) ИЛИ (ПустоеЗначение(ИмяРеквизита) = 1) Тогда Возврат Нет; КонецЕсли; Реквизит=Метаданные.Документ(ВидДокумента).РеквизитШапки(ИмяРеквизита); Возврат ?(Реквизит.Выбран()=1, Да, Нет ); КонецФункции // =============================== Функция глЕстьРеквизитМнЧ(ИмяРеквизита,ВидДокумента) Экспорт Перем Реквизит; Если (ПустоеЗначение(ВидДокумента) = 1) ИЛИ (ПустоеЗначение(ИмяРеквизита) = 1) Тогда Возврат Нет; КонецЕсли; Реквизит=Метаданные.Документ(ВидДокумента).РеквизитТабличнойЧасти(ИмяРеквизита); Возврат ?(Реквизит.Выбран()=1, Да, Нет ); КонецФункции //глЕстьРеквизитМнЧ // =============================== Функция глПолучитьДоговор(ТекКонтрагент) Экспорт тДог = СоздатьОбъект("Документ"); тДог.ОбратныйПорядок(1); тДог.ВыбратьПоЗначению(ДобавитьМесяц(РабочаяДата(),-120),Дата(0),"ДогКонтрагентов",ТекКонтрагент); Пока тДог.ПолучитьДокумент() = 1 Цикл Возврат тДог.ТекущийДокумент(); Конеццикла; Возврат ПолучитьПустоеЗначение("Документ.Договор"); Конецфункции Процедура ПоставитьБлок(Дока) Экспорт Док=СоздатьОбъект("Документ"); Док.НайтиДокумент(Дока); Если Док.утвержден=1 Тогда Если Найти("Бухгалтер,Администратор",НазваниеНабораПрав())>0 Тогда Док.утвержден=0; Док.ИзмБлок = 1; Иначе Предупреждение("Нету на то прав",3); Возврат; Конецесли; Иначе Док.утвержден=1; Конецесли; Попытка Док.Записать(); Предупреждение("Документ "+Док+" Блоировка = "+Док.утвержден,2); Исключение Предупреждение("Документ заблокирован. Нужно его закрыть сначала",5); Конецпопытки КонецПроцедуры // =============================== Процедура NPS_КонтрольПриЗаписи(Документ) Экспорт Если Документ.SyncStatus = 1 Тогда Документ.SyncStatus = 2; Конецесли; КонецПроцедуры // =============================== Функция глЯщикКоэф(Товар) Экспорт Подч=СоздатьОбъект("Справочник.ЕдИзм"); Подч.ИспользоватьВладельца(Товар); Подч.ВыбратьЭлементы(); Кол=0; Пока Подч.ПолучитьЭлемент()=1 Цикл Кол=0; Если Подч.ПометкаУдаления()=1 Тогда продолжить; Конецесли; Если Подч.Ед=Перечисление.Единицы.ящик Тогда Кол=Подч.Коэффициент; прервать; конецесли; конеццикла; Возврат Кол; Конецфункции // =============================== Функция глНайтиЕдиницу(ТМЦ,Ед) Экспорт Перем СпрЕд; СпрЕд=СоздатьОбъект("Справочник.ЕдИзм"); СпрЕд.ИспользоватьВладельца(ТМЦ); СпрЕд.ВыбратьЭлементы(); Пока СпрЕд.ПолучитьЭлемент()=1 Цикл Если (СпрЕД.ПометкаУдаления()=0) Тогда Если СпрЕд.Ед=Ед Тогда возврат СпрЕд; КонецЕсли; КонецЕсли; КонецЦикла; возврат СоздатьОбъект("Справочник.ЕдИзм"); КонецФункции // =============================== Функция глТоварШтучный(ТМЦ) Экспорт Если (ТМЦ.БазЕдиница=Перечисление.Единицы.шт) или (ТМЦ.БазЕдиница=Перечисление.Единицы.комплект) или (ТМЦ.БазЕдиница=Перечисление.Единицы.вагон) или (ТМЦ.БазЕдиница=Перечисление.Единицы.бутылка) или (ТМЦ.БазЕдиница=Перечисление.Единицы.упаковка) или (ТМЦ.БазЕдиница=Перечисление.Единицы.ящик) или (ТМЦ.БазЕдиница=Перечисление.Единицы.пачка) или (ТМЦ.БазЕдиница=Перечисление.Единицы.блок) или (ТМЦ.БазЕдиница=Перечисление.Единицы.коробка) или (ТМЦ.БазЕдиница=Перечисление.Единицы.контейнер) или (ТМЦ.БазЕдиница=Перечисление.Единицы.поддон) или (ТМЦ.БазЕдиница=Перечисление.Единицы.цистерна) Тогда возврат 1; КонецЕсли; возврат 0; КонецФункции // =============================== Функция глПроверкаТМЦнаКратность(Тов,Клво) Экспорт Кратность=глНайтиЕдиницу(Тов,Перечисление.Единицы.блок).Коэффициент; Если Кратность=0 тогда Если глТоварШтучный(Тов)=1 Тогда Кратность=1; иначе Кратность=глНайтиЕдиницу(Тов,Перечисление.Единицы.ящик).Коэффициент; КонецЕсли; КонецЕсли; Если НЕ(Кратность=0) Тогда Если НЕ(Цел(Клво/Кратность)=Клво/Кратность) Тогда Сообщить("Количество для товара "+Тов+" не кратно ящику","!!!" ); Возврат 0; //блок КонецЕсли; Иначе Сообщить("В весовом товаре "+Тов+" не установлена единица ящик","!!!"); Возврат 0; //блок КонецЕсли; Возврат ВсеВыбрано; КонецФункции // =============================== Функция глПроверкаОтгрузкиКлиентаПоФорме(Конт) Экспорт Если Константа.КонтрольОтгрузкиКлиентовПоФорме = Да Тогда Если Найти("РасходнаяНакладная \ ВозвратнаяНакладная \ ПриходнаяНакладная",Конт.Вид()) > 0 Тогда Если Конт.Клиент.НужноФ1 = 0 Тогда Сообщить("Клиенту "+Конт.Клиент+" не разрешена отгрузка по форме 1"); Возврат 0; КонецЕсли; ИначеЕсли Найти("РасходнаяНакладнаяН \ ВозвратнаяНакладнаяН \ ПриходнаяНакладнаяН",Конт.Вид()) > 0 Тогда Если Конт.Клиент.НужноФ2 = 0 Тогда Сообщить("Клиенту "+Конт.Клиент+" не разрешена отгрузка по форме 2"); Возврат 0; КонецЕсли; Конецесли; Возврат ВсеВыбрано; Иначе Возврат ВсеВыбрано; КонецЕсли; КонецФункции // =============================== Функция ПоказатьБлок(Дока) Экспорт Попытка // для док логист ДокИзмБлок = ?(Дока.ИзмБлок=1,"З",""); Если Дока.утвержден=1 Тогда Возврат(" "+ДокИзмБлок+"Б "); Иначе Возврат ""+ДокИзмБлок Конецесли; Исключение Возврат ""; КонецПопытки; Конецфункции // =============================== Процедура ЗафиксироватьПечать(Конт) Экспорт Конт.Печать = Конт.Печать + 1; Попытка Конт.Записать(); Исключение Конецпопытки; Конецпроцедуры // =============================== Функция глПроверкаПоРевизии(Конт,Действие=1) Экспорт Шаг = 0; ~М1: Если (Конт.Вид() = "Перемещение") или (Конт.Вид() = "Хранение") Тогда Если (Конт.Куда.Выбран() = 0) или (Конт.Откуда.Выбран() = 0) Тогда Возврат 0; Конецесли; Если Шаг = 2 Тогда Возврат 0; Конецесли; Склад = ?(шаг=0,Конт.Откуда,Конт.Куда); Шаг = Шаг + 1; Если Склад.Вид()<>"Склады" Тогда Перейти ~М1; Конецесли; Док = Склад.ДокРевизия.Получить(РабочаяДата()); Если Док.Выбран() = 0 Тогда Перейти ~М1; Конецесли; Иначе Если Конт.Склад.Выбран() = 0 Тогда Возврат 0; Конецесли; Склад = Конт.Склад; Док = Склад.ДокРевизия.Получить(РабочаяДата()); Если Док.Выбран() = 0 Тогда Возврат 0; Конецесли; Конецесли; ДатаРевизия = Док.ДатаДок; Если Конт.ДатаДок <= ДатаРевизия Тогда Сообщить("Блок по ревизии "+Док); Если НазваниеНабораПрав()<>"Администратор" Тогда Если Действие = 2 Тогда // При записи прочее СтатусВозврата(0); Возврат 1; Иначе // Открытие документа Конт.Форма.ТолькоПросмотр(1); Конт.Форма.кОК.Доступность(0); Возврат 1; Конецесли; Иначе Возврат 0; Конецесли; Конецесли; Если (Конт.Вид() = "Перемещение")или (Конт.Вид() = "Хранение") Тогда Перейти ~М1; Конецесли; Возврат 0; Конецфункции // =============================== Функция ГотовностьККМ() Экспорт Если Константа.ИспользоватьOPOS = Да Тогда Возврат 1; КонецЕсли; Результат = 1; Если Пользователь.ДоступкККМ=Да Тогда drvFPL.GetStatus(0); Если drvFPL.Enabled=0 Тогда Сообщить("Компонента не включена");Иначе Если drvFPL.AddPaper=0 Тогда Сообщить("Предупреждение: Добавьте бумагу !");КонецЕсли; Если drvFPL.PaperOut=0 Тогда Сообщить("Ошибка: Закончилась бумага !");Иначе Если drvFPL.FiscalOpen=0 Тогда Сообщить("Ошибка: Открыт фискальный чек !");Иначе Если drvFPL.NonFiscalOpen=0 Тогда Сообщить("Ошибка: Открыт не фискальный чек !");Иначе Если drvFPL.ServiceOpen=0 Тогда Сообщить("Ошибка: Открыт сервисный чек !");Иначе Если drvFPL.Abscent=0 Тогда Сообщить("Ошибка: Нет места в памяти ККМ !");Иначе Если drvFPL.Less30=0 Тогда Сообщить("Предупреждение: Мало места в памяти ККМ !");Иначе Если drvFPL.ResultCode<>0 Тогда Сообщить("Ошибка: ККМ не включен ! Включите ККМ и подождите 10 секунд."); Иначе Результат = 0; КонецЕсли;КонецЕсли;КонецЕсли;КонецЕсли; КонецЕсли;КонецЕсли;КонецЕсли;КонецЕсли; КонецЕсли; Возврат Результат; КонецФункции // =============================== Процедура ПодключитьККМ() Если ДрайверККМЗагружен=Да Тогда if drvFPL.Enabled=1 Then //drvFPL.GetStatus(0); if ГотовностьККМ()=0 Then RegNumber=drvFPL.TaxNumber; curUsers=CreateObject("Справочник.Регистраторы"); curUsers.НайтиПоРеквизиту("РегНомер",RegNumber,1); if curUsers.Выбран()=1 Then // to do what operator name drvFPL.SetOperatorName(1,curUsers.Пароль1,Пользователь.КодПользователя); Если Число(drvFPL.RetItem0)=0 Тогда ДрайверККМустановлен=Да; Message("Users setted as: "+Пользователь.КодПользователя); Message("интерфейс ККМ"); Иначе Message("Datecs FP3530 ошибка установки Имени Кассира"); КонецЕсли; else Message("Datecs FP3530 не найдена в справочнике "+RegNumber); EndIf; else Message("Datecs FP3530 не обнаружен или не включено питание"); EndIf; else Message("Datecs FP3530 не включена компонента"); ДрайверККМустановлен=Нет; EndIf; КонецЕсли; КонецПроцедуры // =============================== функция UPCExt(in) Экспорт if strlen(in)<>8 then return 0; endif; sb=number(mid(in,7,1)); if sb<3 then in=mid(in,1,3)+mid(in,7,1)+"0000"+mid(in,4,3)+mid(in,8,1); elsif sb=3 then in=mid(in,1,4)+"00000"+mid(in,5,2)+mid(in,8,1); elsif sb=4 then in=mid(in,1,5)+"00000"+mid(in,6,1)+mid(in,8,1); else in=mid(in,1,6)+"0000"+mid(in,7,2); endif; return 1; EndFunction Функция EANUPC(инпарам) Экспорт парам=инпарам; // для того чтобьі не изменился параметр Если mid(парам,1,2)="LM" Тогда return 1; КонецЕсли; Если mid(парам,1,1)="0" Тогда UPCExt(парам); КонецЕсли; // check crc длин=СтрДлина(парам); пар=0;нпар=0; Для і=1 по длин-1 Цикл Зн=Число(Сред(парам,длин-і,1)); нпар=нпар+?(і%2=0,0,Зн); пар=пар+?(і%2=0,Зн,0); КонецЦикла; црц=Число(Сред(парам,длин,1)); Если (нпар*3+пар+црц)%10=0 Тогда возврат длин КонецЕсли; возврат -(10-(нпар*3+пар)%10); Конецфункции // =============================== Функция ПолучитьЛицензию(Пар1,Н) Экспорт; //К=фирма или клиент //Н=1 тютюн Н=2 алкоголь Если Н=1 Тогда Вид=Перечисление.ВидЛицензии.Тютюн; Иначе Вид=Перечисление.ВидЛицензии.Алкоголь; КонецЕсли; Если Пар1.Вид()="Фирмы" Тогда Л=СоздатьОбъект("Справочник.ЛицензииФирмы"); Иначе Л=СоздатьОбъект("Справочник.ЛицензииКлиента"); КонецЕсли; Л.ИспользоватьВладельца(Пар1); Л.ОбратныйПорядок(1); Л.ВыбратьЭлементы(); Пока Л.ПолучитьЭлемент()=1 Цикл Если Л.ВидЛицензии=Вид Тогда Возврат "ліцензія на "+Л.ВидЛицензии+" "+СокрЛП(Л.НомерЛицензии)+?(Л.ДатаЛицензии>Дата("01.01.00")," до "+Л.ДатаЛицензии,""); КонецЕсли КонецЦикла; Возврат ""; КонецФункции Функция ПолучитьДоговор(Клиент) Экспорт; //К=фирма или клиент //Н=1 тютюн Н=2 алкоголь Л=СоздатьОбъект("Справочник.Договора"); Л.ИспользоватьВладельца(Клиент); Л.ОбратныйПорядок(1); Л.ВыбратьЭлементы(); Пока Л.ПолучитьЭлемент()=1 Цикл Возврат "договір куплі-продажу № "+СокрЛП(Л.Номер)+?(Л.ДатаЗак>Дата("01.01.99")," від "+Л.ДатаЗак,"")+?(Л.СумаДог>0," на суму "+Л.СумаДог,"")+ " до "+Л.ДатаЗакр; КонецЦикла; Возврат ""; КонецФункции Функция ПолучитьДоговорН(Клиент) Экспорт; //К=фирма или клиент //Н=1 тютюн Н=2 алкоголь Л=СоздатьОбъект("Справочник.ДоговораН"); Л.ИспользоватьВладельца(Клиент); Л.ОбратныйПорядок(1); Л.ВыбратьЭлементы(); Пока Л.ПолучитьЭлемент()=1 Цикл Возврат ""+СокрЛП(Л.Договор.ВидДоговора)+" № "+СокрЛП(Л.Договор.НомерДок)+" від "+Л.Договор.ДатаНачала + " до "+Л.Договор.ДатаКонца; КонецЦикла; Возврат ""; КонецФункции // =============================== // =============================== Функция ДоступКдокументу(Конт,Сообщение=1) Если Найти(Константа.ЮзерыДоступа,"/"+Число(Пользователь.Код)+"/")>0 Тогда возврат 1; КонецЕсли; Если (Конт.ДатаДок > Константа.ДатаЗапретаРедактирования) и ((Конт.ДатаДок > '31.03.11') или (Константа.ЗапретПроведенияДоАпреля2011=Нет)) Тогда Иначе Сообщение=0; ДатаСооб = ?(Константа.ДатаЗапретаРедактирования > '31.03.11',Формат(Константа.ДатаЗапретаРедактирования,"ДДДММММГГГГ"), '31.03.2011'); Предупреждение("Запрещено редактирование \ удаление документов (операций), "+РазделительСтрок+"введенных по "+ДатаСооб+" !",4); Возврат 0; КонецЕсли; //Если Конт.ДатаДок<=Константа.ДатаЗапретаРедактирования Тогда // возврат 0; //КонецЕсли; Если ДоступАдмина = 1 Тогда Если Конт.утвержден=1 Тогда возврат 0; КонецЕсли; КонецЕсли; возврат 1; КонецФункции Процедура ИсторияОбъектов(Значение) Экспорт Далее Функция глПроверкаПериода(Дата1,Дата2) Экспорт Если Дата1 > Дата2 Тогда Предупреждение("Неправильно задан период отчета!"+РазделительСтрок+ "Дата начала больше даты окончания периода."); Возврат 0; КонецЕсли; Если Дата2 > КонецРассчитанногоПериодаБИ() Тогда Предупреждение("За выбранный период итоги не рассчитаны!"+РазделительСтрок+ "Расчет итогов выполняется в режиме"+РазделительСтрок+ """Операции - Управление бухгалтерскими итогами""."); Возврат 0; КонецЕсли; Возврат 1; КонецФункции Процедура ПроверкаРазрешенияРедактирования(Конт) Экспорт Перем Сообщение; ПослОткрДок=Конт.ТекущийДокумент(); ИсторияОбъектов(Конт.ТекущийДокумент()); //Если Конт.АвторСозд.Выбран()=1 Тогда // Если ПустаяСтрока(Конт.АвторСозд.Група)=1 Тогда // Предупреждение("У Вас немає Коду ГРУПИ"+РазделительСтрок+"Зверніться До адміністратора!",4); // СтатусВозврата(0); // возврат; // Иначе // Если Найти(СокрЛП(Пользователь.Група),Сред(Конт.АвторСозд.Група,1,1))=0 Тогда // Предупреждение("У Вас немає права доступу до документів НЕ Вашої ГРУПИ",4); // Конт.Форма.ТолькоПросмотр(1); // Возврат; // КонецЕсли; // КонецЕсли; //Иначе // Если Найти(СокрЛП(Пользователь.Група),Сред(Конт.АвторСозд.Група,1,1))=0 Тогда // Предупреждение("У Вас немає права доступу до документів НЕ Вашої ГРУПИ",4); // Конт.Форма.ТолькоПросмотр(1); // Возврат; // КонецЕсли; //КонецЕсли; Если ДоступКдокументу(Конт,Сообщение)=0 Тогда //Если Последовательность.СписаниеПартий.ПринадлежитПоследовательности(Конт.ТекущийДокумент())>0 Тогда Конт.Форма.ТолькоПросмотр(1); //КонецЕсли; Если Сообщение = 1 Тогда Предупреждение("Разрешен только просмотр документа!",4); Конецесли; Возврат; КонецЕсли; Если Конт.ТекущийДокумент().Выбран()=1 Тогда попытка Если (ДоступАдмина=1)и(Конт.Склад.Вид=Перечисление.ВидыСкладов.оптовый)и(Конт.Склад.КодИБ<>ТекущаяИБКод())и(Найти(Константа.ЮзерыДоступа,"/"+Число(Пользователь.Код)+"/")=0) Тогда Конт.Форма.ТолькоПросмотр(1); Предупреждение("Разрешен только просмотр документа!"+Разделительстрок+"документ принадлежит другой базе",4); Возврат; КонецЕсли; исключение конецпопытки; КонецЕсли; Конт.ПриЗаписиПерепроводить(1); Если ДоступАдмина = 1 Тогда Если Конт.утвержден=1 Тогда Конт.Форма.ТолькоПросмотр(1); //Предупреждение("Разрешен только просмотр документа!",4); КонецЕсли; КонецЕсли; Если (Константа.ВидимостьУчета=Нет)и(ДоступАдмина+ДоступБуха=2) Тогда попытка Конт.Форма.ВидУчета.Видимость(0); исключение конецпопытки; попытка Конт.Форма.утвержден.Видимость(0); исключение конецпопытки; иначе Конт.Форма.ТолькоПросмотр(0); КонецЕсли; КонецПроцедуры //============================================================================= Процедура ОбработкаЯчейкиТаблицы(Расшифровка, СтандартнаяОбработка, Таблица) Экспорт Перем Отчет; Если ТипЗначенияСтр(Расшифровка) <> "СписокЗначений" Тогда СтандартнаяОбработка = 1; Возврат; КонецЕсли; // Расшифровка отчета Док = Расшифровка.Получить("Документ"); Если ТипЗначения(Док) <> 0 Тогда ОткрытьФорму("Операция",, Док, Расшифровка.Получить("НомерПроводки"), Расшифровка.Получить("НомерКорреспонденции"),-1); Иначе Если Расшифровка.Получить("Меню") = 1 Тогда Меню = СоздатьОбъект("СписокЗначений"); Меню.ДобавитьЗначение("КарточкаСчета", "Карточка счета"); Если Расшифровка.Получить("Счет").КоличествоСубконто()>0 Тогда Меню.ДобавитьЗначение("ОборотноСальдоваяВедомостьПоСчету", "Ведомость по субконто"); КонецЕсли; Меню.ДобавитьЗначение("АнализСчета", "Анализ счета"); Меню.ДобавитьЗначение("ОтчетПоПроводкам", "Отчет по проводкам"); Меню.ДобавитьЗначение("ГлавнаяКнига", "Обороты счета (Гл. книга)"); Меню.ДобавитьЗначение("ЖурналОрдер", "Журнал-ордер (ведомость) по счету"); Если Меню.ВыбратьЗначение(Отчет, "",,, 1) = 0 Тогда Возврат; КонецЕсли; Иначе Отчет = Расшифровка.Получить("Отчет"); КонецЕсли; глРасшифровка = Расшифровка; глФлагРасшифровки = 1; глОбновить = Число(Расшифровка.Получить("Обновить")); Если глОбновить <> 0 Тогда глТаблица = Таблица; КонецЕсли; ОткрытьФорму("Отчет."+Отчет+"#"); глФлагРасшифровки = 0; глРасшифровка = 0; глОбновить = 0; КонецЕсли; КонецПроцедуры //(с) ABBYY 1999 // =============================== Процедура УстановкаБазЕд(Конт,Тов,УстЕд = 0) Экспорт ЕдИзм = СоздатьОбъект("Справочник.ЕдИзм"); Если Тов = 0 Тогда Если ПустоеЗначение(Константа.СлужебныйТМЦ) = 0 Тогда Тов = Константа.СлужебныйТМЦ; Иначе Предупреждение("Не заполнено значение константы ""Служебный ТМЦ"", установка единицы измерения не выполнена!"); Возврат; КонецЕсли; КонецЕсли; Если ПустоеЗначение(Тов) = 1 Тогда Возврат КонецЕсли; НовЕд = ?(УстЕд = 0, Тов.БазЕдиница, УстЕд); ЕдИзм.ИспользоватьВладельца(Тов); ЕдИзм.ВыбратьЭлементы(); Пока ЕдИзм.ПолучитьЭлемент()>0 Цикл Если ЕдИзм.Ед=НовЕд Тогда Конт.Ед = ЕдИзм.ТекущийЭлемент(); Конт.Коэффициент = ЕдИзм.Коэффициент; Возврат; КонецЕсли; КонецЦикла; // еще нет базовой единицы ЕдИзм.Новый(); ЕдИзм.Ед = НовЕд; ЕдИзм.Коэффициент = 1; ЕдИзм.Наименование = Строка(НовЕд); ЕдИзм.Записать(); Конт.Ед = ЕдИзм.ТекущийЭлемент(); Конт.Коэффициент=1; КонецПроцедуры Функция ПолучитьБазЕд(Тов,УстЕд = 0) Экспорт ЕдИзм = СоздатьОбъект("Справочник.ЕдИзм"); НовЕд = ?(УстЕд = 0, Тов.БазЕдиница, УстЕд); ЕдИзм.ИспользоватьВладельца(Тов); ЕдИзм.ВыбратьЭлементы(); Пока ЕдИзм.ПолучитьЭлемент()>0 Цикл Если ЕдИзм.Ед=НовЕд Тогда Возврат ЕдИзм.ТекущийЭлемент(); КонецЕсли; КонецЦикла; // еще нет базовой единицы ЕдИзм.Новый(); ЕдИзм.Ед = НовЕд; ЕдИзм.Коэффициент = 1; ЕдИзм.Наименование = Строка(НовЕд); ЕдИзм.Записать(); Возврат ЕдИзм.ТекущийЭлемент(); КонецФункции // =============================== Функция КурсДляВалюты(Валюта,ДатаКурса) Экспорт Если Валюта=Константа.Гривня Тогда // Для базовой валюты курс всегда равен 1, поэтому отображаем курс Основной валюты Возврат Константа.ОсновнаяВалюта.Курс.Получить(ДатаКурса); Иначе // для других валют записываем их собственный курс Возврат Валюта.Курс.Получить(ДатаКурса); КонецЕсли; КонецФункции // =============================== // Возвращает номер документа без префикса Функция глНомерБезПрефикса(Знач НомерДок) Экспорт Если Найти(НомерДок,"-") > 0 Тогда Возврат Число(Сред(НомерДок,Найти(НомерДок,"-")+1)); Иначе Возврат Число(НомерДок); КонецЕсли; КонецФункции // =========================== // Используется 4 формы: // Пересчет(Сумма,ВалН,ВалК,КурсН,КурсК,Дата) // Пересчет(Сумма,ВалН,ВалК,КурсН,Дата) // Пересчет(Сумма,ВалН,ВалК,Дата,КурсК) // Пересчет(Сумма,ВалН,ВалК,Дата) Функция Пересчет(Сумма,ВалН,ВалК,Пар4,Пар5=0,Пар6=0) Экспорт Перем КурсН, КурсК, Дт; Перем КратН, КратК; Если (ТипЗначения(Пар4)=3) и (Пар5=0) и (Пар6=0) Тогда // форма 4 Дт = Пар4; КурсН = ВалН.Курс.Получить(Дт); КурсК = ВалК.Курс.Получить(Дт); ИначеЕсли Пар6 = 0 Тогда Если (ТипЗначения(Пар4)=1) и (ТипЗначения(Пар5)=3) Тогда // форма 2 КурсН = Пар4; Дт = Пар5; КурсК = ВалК.Курс.Получить(Дт); ИначеЕсли (ТипЗначения(Пар4)=3) и (ТипЗначения(Пар5)=1) Тогда // форма 3 Дт = Пар4; КурсК = Пар5; КурсН = ВалН.Курс.Получить(Дт); Иначе Сообщить("Неверные параметры в функции Пересчет!"); Возврат Сумма; КонецЕсли; ИначеЕсли (ТипЗначения(Пар4)=1) и (ТипЗначения(Пар5)=1) и (ТипЗначения(Пар6)=3) Тогда // форма 1 КурсН = Пар4; КурсК = Пар5; Дт = Пар6; Иначе Сообщить("Неверные параметры в функции Пересчет!"); Возврат Сумма; КонецЕсли; КратН = ВалН.Кратность.Получить(Дт); КратК = ВалК.Кратность.Получить(Дт); // пересчитываем Если ВалН = ВалК Тогда Возврат Сумма; КонецЕсли; Если ВалН = Константа.Гривня Тогда // грн -> вал Возврат Сумма*КратК/КурсК; ИначеЕсли ВалК = Константа.Гривня Тогда // вал -> грн Возврат Сумма*КурсН/КратН; Иначе // вал -> вал СуммаГрн = Сумма*КурсН/КратН; Возврат СуммаГрн*КратК/КурсК; КонецЕсли; КонецФункции // =============================== Функция КурсСтр(Конт) Экспорт Если Конт.Валюта = Константа.Гривня Тогда Возврат "грн за "+Константа.ОсновнаяВалюта.Кратность.Получить(Конт.ДатаДок)+ " "+Константа.ОсновнаяВалюта.Кратко; Иначе Возврат "грн за "+Конт.Валюта.Кратность.Получить(Конт.ДатаДок)+ " "+Конт.Валюта.Кратко; КонецЕсли; КонецФункции // =============================== Функция С_НДС(СуммаБезНДС, СтавкаНДС, Дт) Экспорт Возврат СуммаБезНДС * (1 + СтавкаНДС.Ставка.Получить(Дт)); КонецФункции Функция глВалютаЗаказа(Заказ) Экспорт Если ПустоеЗначение(Заказ) = 1 Тогда Возврат Гривня; КонецЕсли; Попытка Вал = Заказ.Валюта; Исключение Вал = Гривня; КонецПопытки; Возврат Вал; КонецФункции // =============================== Функция ФРМВал(Сум, Вал, СВалютой = 0) Экспорт Стр=СокрЛ(Формат(Сум,"Ч015.2.'")); Если ((Свалютой=1) ИЛИ (СВалютой = Да)) И (ПустаяСтрока(Стр)=0) Тогда Возврат Стр+" "+СокрП(Вал.Кратко); Иначе Возврат Стр; КонецЕсли; КонецФункции // =============================== Процедура Радио3(ф1, ф2, ф3) Экспорт Если ф1 = 1 Тогда ф2 = 0; ф3 = 0; Иначе Если (ф2 = 0) и (ф3 = 0) Тогда ф1 = 1; КонецЕсли; КонецЕсли; КонецПроцедуры // =============================== Процедура Радио2(ф1, ф2) Экспорт Если ф1 = 1 Тогда ф2 = 0; Иначе ф2 = 1; КонецЕсли; КонецПроцедуры //-(с) 1с ---------------------- Процедура Оживить(ДобСтрок) Экспорт ЧислоСтрок=ЧислоСтрок+ДобСтрок; Состояние("В отчет выведено "+ЧислоСтрок+" строк."); КонецПроцедуры // =========================== Функция ПроверкаСканераШтрихКодов() Экспорт Если Константа.ИспользоватьСканерШтрихКодов = Да Тогда Возврат 1; Иначе Возврат 0; КонецЕсли; КонецФункции // =============================== Функция УрбПН(Ин) сайз=СтрДлина(Ин); возврат Лев(Лев(Ин,сайз-1)+Симв(КодСимв(Прав(Ин,1))+Число(Прав(ТекущаяИБКод(),2))),сайз); КонецФункции // =============================== Функция ПолучитьПрефиксНомераДокументов(Конт) Перем ПрефиксФирмы; ПрефиксФирмы = Сокрлп(Конт.Фирма.ПрефиксНомера); Если ТекущаяИБЦентральная()=0 Тогда ПрефиксФирмы = СокрЛП(ТекущаяИБ.ПрефиксНомера); Если ПустоеЗначение(ПрефиксФирмы) = 0 Тогда Возврат ПрефиксФирмы; КонецЕсли; Если глЕстьРеквизитШапки("Склад",Конт.Вид()) = Да Тогда Если ПустоеЗначение(Сокрлп(Конт.Склад.ПрефиксНомера)) = 0 Тогда ПрефиксФирмы = Сокрлп(Конт.Склад.ПрефиксНомера); Конецесли; ИначеЕсли глЕстьРеквизитШапки("Откуда",Конт.Вид()) = Да Тогда Если Конт.Откуда.Вид()="Склады" Тогда Если ПустоеЗначение(Сокрлп(Конт.Откуда.ПрефиксНомера)) = 0 Тогда ПрефиксФирмы = Сокрлп(Конт.Откуда.ПрефиксНомера); Конецесли; Конецесли; ИначеЕсли глЕстьРеквизитШапки("РСчет",Конт.Вид()) = Да Тогда Если ПустоеЗначение(Сокрлп(Конт.РСчет.ПрефиксНомера)) = 0 Тогда ПрефиксФирмы = Сокрлп(Конт.РСчет.ПрефиксНомера); Конецесли; ИначеЕсли глЕстьРеквизитШапки("Заказ",Конт.Вид()) = Да Тогда Если глЕстьРеквизитШапки("Склад",Конт.Заказ.Вид()) = Да Тогда Если ПустоеЗначение(Сокрлп(Конт.Заказ.Склад.ПрефиксНомера)) = 0 Тогда ПрефиксФирмы = Сокрлп(Конт.Заказ.Склад.ПрефиксНомера); Конецесли; Конецесли; Конецесли; Конецесли; Возврат ПрефиксФирмы КонецФункции // =============================== Процедура УстановитьНомерДокумента(Конт) Экспорт Если Конт.ТекущийДокумент().Выбран()=0 Тогда Конт.АвторСозд = Пользователь; КонецЕсли; ПрефиксФирмы = ПолучитьПрефиксНомераДокументов(Конт); ПрефиксНалоговыхДокументов = ""; Если (Конт.Вид() = "Приложение2") ИЛИ ( (Ко |
|||
4
shadowfiend10
15.02.13
✎
18:00
|
ну хоть бы код скрипта выложил
|
|||
5
bananan
15.02.13
✎
18:01
|
Упс, пардон не тот код скинул
вот теперь тот код: Перем ВыбНачПериода, ВыбКонПериода; //******************************************* Функция Разность(Конт) //Перем кат,минцена,докцена; ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Автор"); ТЗ.НоваяКолонка("Товар"); ТЗ.НоваяКолонка("Ошибка"); ТЗ.НоваяКолонка("Стр"); Конт.ВыбратьСтроки(); ТЗ.Автор = Конт.Автор; Пока Конт.ПолучитьСтроку()=1 Цикл прихцена=Окр(Конт.ТМЦ.Цена_Прих.Получить(Конт.ДатаДок)*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)),2); докцена=Окр(?(Конт.Кво*Конт.Коэффициент=0,0,Конт.СуммаСНДС/(Конт.Кво*Конт.Коэффициент)),2); Если докцена<прихцена Тогда ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має ціну нижчу за прихідну "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Если кат.Выбран()=1 Тогда минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2); Если докцена<минцена Тогда ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має надто низьку ціну="+докцена+" мiнимальна="+минцена; ТЗ.Стр = Конт.НомерСтроки; КонецЕсли; КонецЕсли; КонецЦикла; Возврат(ТЗ); КонецФункции //******************************************* Процедура Сформировать() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы()); ОбДок = "Документ.РасходнаяНакладная"; СчетИтер = 0; Пока СчетИтер<1 Цикл ВыбДок=СоздатьОбъект(ОбДок); Если СчетИтер = 0 Тогда ОбДок = "Документ.РасходнаяНакладная"; Иначе ОбДок = "Документ.РасходнаяНакладнаяН"; КонецЕсли; ВыбДок=СоздатьОбъект(ОбДок); ВыбДок.УстановитьФильтр(1,0); ВыбДок.ВыбратьДокументы(ДатаС,ДатаПо); иф = 1; кво = 0; кДок = 0; кОшиб=0; Пока ВыбДок.ПолучитьДокумент()<>0 Цикл Состояние("Перевірка "+ВыбДок+" ..."); кДок = кДок + 1; ТЗ=Разность(ВыбДок); Если ТЗ.КоличествоСтрок()>0 Тогда ПечДок = ВыбДок.ТекущийДокумент(); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл кОшиб=кОшиб+1; ПечОшибка = ТЗ.Ошибка; ПечТовар = ТЗ.Товар; Если ТЗ.Стр <> 0 Тогда ПечНомерСтрокиСОшибкой = ТЗ.Стр; Иначе ПечНомерСтрокиСОшибкой = "А хто його знає"; КонецЕсли; Таб.ВывестиСекцию("Документ"); ПредНомер = ""; ПредНомер = ПечДок.НомерДок; Пока ТЗ.ПолучитьСтроку()=1 Цикл ПечОшибка = ТЗ.Ошибка; ПечТовар = ТЗ.Товар; ПечНомерСтрокиСОшибкой = ТЗ.Стр; кво = кво+1; Если СтрДлина(ТЗ.Ошибка)>0 Тогда //Обл = Таб.Область(12+1*иф, 2,(12+1*иф), 2); //Обл.ЦветФона(1, 1, 1); //Обл.ЦветТекста(125, 125, 125); Таб.ВывестиСекцию("Ошибка"); иф=иф+1; КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; КонецЦикла; СчетИтер = СчетИтер + 1; КонецЦикла; Состояние("Готово!"); Предупреждение("Количество документов - "+кДок+" в них "+кОшиб+" ошибок"); Таб.ТолькоПросмотр(1); Таб.Защита(1); Таб.Показать("Негаразд",""); КонецПроцедуры |
|||
6
bananan
15.02.13
✎
18:03
|
+(5) на сколько я понимаю - в даном коде - вряд-ли что можно оптимизировать, писать прямой запрос?
С запросом - я НЕ могу придумать как в запросе обрабатывать каждую строку документа.. |
|||
7
Rie
15.02.13
✎
18:05
|
(6) Пиши прямой запрос...
"Каждую строку документа" - если используешь 1С++, то $ДокументСтроки. Если нет - то смотри в DDS, как табличная часть называется. |
|||
8
bananan
15.02.13
✎
18:09
|
(7) О прямом запросе я и думал...
Лан. пробую писать прямой запрос (если возникнут пробдемы - бюужу орбращаться) К стати, чуть не забыл даный код что показан выше, так вот в некоторых случаях он просто выводит документ и автора документа а ошибки вроде как и нету - не могу найти почему... может кто увидит? |
|||
9
bananan
15.02.13
✎
18:28
|
+(8) И еще а как в прямом запросе организв\овать функцию и можно ли ее организовать?
|
|||
10
Classic
15.02.13
✎
18:37
|
(5)
Кривой |
|||
11
bananan
15.02.13
✎
18:38
|
(10) Что кривой? код?
|
|||
12
Classic
15.02.13
✎
18:38
|
(11)
Ага |
|||
13
bananan
15.02.13
✎
18:39
|
(12) А советтвой в чем? Порправить код, а как??
|
|||
14
Classic
15.02.13
✎
18:39
|
Навскидку.
У тебя почему-то вложенный двойной цикл по ТЗ. Зачем-то ты сначала в ТЗ пишешь, потом бежишь по ТЗ. При большом количестве ошибок ты делаешь два раза обход |
|||
15
Mikeware
15.02.13
✎
18:40
|
(11) Есть анекдот. Верблюда спросили: «Почему у тебя шея кривая?». «А что у меня прямое?» - ответил верблюд.
так вот, у тебя кривое практически все. кроме, пожалуй, извилин... |
|||
16
bananan
15.02.13
✎
18:41
|
(15) Спасибо за омплименто, о Кривоизвилистый!
|
|||
17
Classic
15.02.13
✎
18:42
|
+(14)
Это просто пробежал глазами не вникая даже в процедуру проверки |
|||
18
BlackSeaCat
15.02.13
✎
18:43
|
Сходу:
1. Проанализировать текст, все, что можно вычислять не в цикле - вынести из цикла. Например: ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); это разве меняется в цикле? 2. Минимизировать многоточечность в выражениях - ощутимо замедляет. То есть, вместо Конт.ТМЦ.Цена_Прих.Получить() написать КонтТовар=Конт.ТМЦ; КонтТовар.Цена_Прих.Получить() и далее по тексту. Причем, КонтТовар можно определить один раз за проход в цикле, а использовать - несколько раз, там дофига конструкций типа Конт.ТМЦ. |
|||
19
bananan
15.02.13
✎
18:43
|
(17) И за то - спасибо, может еще чего увидишь - пиши, пожалуйста
|
|||
20
Classic
15.02.13
✎
18:44
|
ИспользоватьДату - даст тебе возможность не метаться к метаданным в определении, периодический это реквизит или нет
|
|||
21
bananan
15.02.13
✎
18:45
|
(18) Спасибо - сейчас посмотрю
|
|||
22
bananan
15.02.13
✎
18:49
|
(20) А где ИспользоватьДату, вроде только здесь:
Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; |
|||
23
bananan
15.02.13
✎
18:53
|
(14) Где у меня двойной цикл по ТЗ (что-то не вижу)?
|
|||
24
bananan
15.02.13
✎
18:54
|
+(23) упс, вложен\ый цикл по ТЗ - гашел
|
|||
25
bananan
15.02.13
✎
19:21
|
Я спрашивал у шефе - по поводу скорости исполнения скрипта - так максимум 2-3 минуты, следоавательно буду писать прямой запрос... Как в прямом запросе организовать функцию?
|
|||
26
Classic
15.02.13
✎
20:03
|
(25)
Зачем тебе там функция? Там все в запросе организовать можно |
|||
27
bananan
18.02.13
✎
14:08
|
(26) Я уже понял что все надо делать в запросе, да и SQL не расчитан на то чтобы можно было самому писать функции...
Но, я пока что с запросами 1С, а тем более SQL - мелко плаваю.. Так что, - прошу вашей помощи.. Понятно что код который в функции: ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Автор"); ТЗ.НоваяКолонка("Товар"); ТЗ.НоваяКолонка("Ошибка"); ТЗ.НоваяКолонка("Стр"); Конт.ВыбратьСтроки(); ТЗ.Автор = Конт.Автор; ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Пока Конт.ПолучитьСтроку()=1 Цикл контТовар = Конт.ТМЦ; прихцена=Окр(КонтТовар.Цена_Прих.Получить(Конт.ДатаДок)*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)),2); докцена=Окр(?(Конт.Кво*Конт.Коэффициент=0,0,Конт.СуммаСНДС/(Конт.Кво*Конт.Коэффициент)),2); // ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); Если докцена<прихцена Тогда // ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має ціну нижчу за прихідну "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; //кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Если кат.Выбран()=1 Тогда минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2); Если докцена<минцена Тогда //3/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має надто низьку ціну="+докцена+" мiнимальна="+минцена; ТЗ.Стр = Конт.НомерСтроки; КонецЕсли; КонецЕсли; КонецЦикла; Возврат(ТЗ); Надо засунуть в SQL - там будет несколько джоинов... С джоинами - я вообще - почти на нуле.. Но пока мне хотя бы выбрать номер документ (чтобы в итоговой таблице по нему можно было открывать сей документ), автора документа, ТМЦ и номер строки в которой это ТМЦ стоит с неправильной ценой (правильность цены определяет функция)... То есть, вроде все знаю как делать - а вот сижу и смотрю на монитро - как баран на новые ворота.. т.е. на данный момент - поняти не имею как задать период для документов и как достучаться до автора документа.. У кого есть время - помогите, пожалуйста! |
|||
28
ДенисЧ
18.02.13
✎
14:11
|
" SQL не расчитан на то чтобы можно было самому писать функции... "
Оппа... А мужики-то и не знают.. И клепают всякие stored proc и user-defined functions... |
|||
29
bananan
18.02.13
✎
14:16
|
(28) Т.е. код что я показал можна таки засунуть в фунцию?
|
|||
30
bananan
18.02.13
✎
14:17
|
+(29) и все это можно будет использовать в прямом запросе?
|
|||
31
ДенисЧ
18.02.13
✎
14:19
|
да
|
|||
32
bananan
18.02.13
✎
14:22
|
(31) Это немнго радует. Ок, понятно что дата документа - будет браться из формы запроса... Так вот: как достучаться до даты документа и до автора документа в прямом запросе?
Документ.Автор и Документ,ДатаДок - парсер их незнает.. |
|||
33
Wobland
18.02.13
✎
14:25
|
(32) $Документ.Автор, а дата в журнале живёт
|
|||
34
Wobland
18.02.13
✎
14:27
|
для размышления:
ТекстЗапроса=" |SELECT DISTINCT | CAST(LEFT(Жур.Date_Time_IDDoc, 8) AS DATETIME) AS ДатаДок, | $Док.Касса AS [Касса $Справочник.Кассы] |FROM | _1SJourn AS Жур | INNER JOIN | $Документ.ОтчетККМ AS Док | ON Док.IDDoc=Жур.IDDoc |WHERE | Жур.Date_Time_IDDoc BETWEEN :ДатаНачала AND :ДатаОкончания~ | AND Жур.Closed&1=1"; |
|||
35
Mikeware
18.02.13
✎
14:28
|
(29) сдается мне, что и в функцию это засовывать не надо...
|
|||
36
bananan
18.02.13
✎
14:28
|
Чтобы вы не говорили, мол я ничего сам не делю и т.д...
На данный момент напимсал такой запрос: ТекстЗапроса = " |SELECT | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная"; |
|||
37
bananan
18.02.13
✎
14:29
|
(3) А как? Чеорез джоины?
|
|||
38
bananan
18.02.13
✎
14:33
|
$Документ.Автор - что-то у меня тоже не получается...
Meta name parser error: объект не найден "$Документ.Автор" такой код запроса: |SELECT | Жур.IDDoc as [Док $Документ], | $Документ.Автор, | Жур.IDDocDef as Док_вид |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная"; |
|||
39
Wobland
18.02.13
✎
14:34
|
(38) Документ - это что такое? //мне не нужен ответ
|
|||
40
bananan
18.02.13
✎
14:38
|
(39) |SELECT
| Жур.IDDoc as [Документ $Документ], А ввобще прошу, помогите кто может |
|||
41
Wobland
18.02.13
✎
14:39
|
(40) что ценного ты узнал из (34)?
|
|||
42
sapphire
18.02.13
✎
14:40
|
(38) Поле "Автор" небось общий реквизит, да?
|
|||
43
bananan
18.02.13
✎
14:41
|
(41) Честно говоря не понимаю зачем там джоиню...
|
|||
44
sapphire
18.02.13
✎
14:42
|
(34) А это чё такое, что-то не припомню такую конструкцию:
AND Жур.Closed&1=1 |
|||
45
bananan
18.02.13
✎
14:42
|
(42) Поле Автор - это автор документа
|
|||
46
bananan
18.02.13
✎
14:42
|
(44) Вроде как журнал не закрыт?
|
|||
47
Wobland
18.02.13
✎
14:42
|
(44) проведённость
|
|||
48
sapphire
18.02.13
✎
14:43
|
(43) Как освоение Ицика Бен-Гана поживает?
|
|||
49
bananan
18.02.13
✎
14:45
|
(48) Читал в последний оаз где-то две недели назад..
|
|||
50
bananan
18.02.13
✎
14:45
|
Да и Ицик с 1С ну никак не поможет
|
|||
51
sapphire
18.02.13
✎
14:47
|
(47) Туплю, битовое И
|
|||
52
sapphire
18.02.13
✎
14:47
|
(50) Ну, в таком разе веревка и мыло тебе в помощь...
|
|||
53
sapphire
18.02.13
✎
14:48
|
(49) Кабы ты не читал, а про-решал задачки, то не постил бы весь этот около 1С-ный поток сознания.
|
|||
54
Wobland
18.02.13
✎
14:50
|
(51) тс-ссс... щас автор заинтересуется
|
|||
55
bananan
18.02.13
✎
14:55
|
(53) А как (програмно) решать те задачи
и разве это поможет достучаться до автора документа:? |
|||
56
Wobland
18.02.13
✎
14:57
|
(55) мы на втором или третьем курсе на бумажке дазы банных решали. пофих на синтаксическую верность, оценивался подход. после такого приёма экзамена вопрос "как достучаться до автора" в принципе не мог стоять. максимум - как организована структура БД
|
|||
57
sapphire
18.02.13
✎
14:59
|
(55) Хм. Это поможет если есть мозг, вам врядли
|
|||
58
bananan
18.02.13
✎
15:00
|
(56) на бумажке - так на бумажке, но как в запросе что я написал:
|SELECT | Жур.IDDoc as [Документ $Документ], | $Документ.Автор, | Жур.IDDocDef as Док_вид |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная"; достучаться до поля Автор документа? | $Документ.Автор, - не прохожит... :( |
|||
59
sapphire
18.02.13
✎
15:00
|
(58) Дебил.
В конфигураторе посмотреть или в файле dd/dds |
|||
60
bananan
18.02.13
✎
15:05
|
(59) Спасибо за комплимент..
В конфигуратрое смотрел в шапке документа и в табличной части НЕТ поля Автор но в текущей версии скрипта я на автора выхожу таким образом: ВыбДок.Автор |
|||
61
sapphire
18.02.13
✎
15:15
|
(60) Я думал, что хотя бы пост (42) читал...
|
|||
62
bananan
18.02.13
✎
15:16
|
(61) Общий это реквезит - скорее всего да, но как к нему достучаться?
|
|||
63
sapphire
18.02.13
✎
15:18
|
+(61) Так что это не комплимент.
Вы крайне невнимательны. Вам уже столько раз говорили, что для написания прямых запросов необходимы как минимум 2 типа знаний: где какие данные хранит платформа 1С версии 7.7 и знание t-SQL для извлечения этих данных. Вы нашим вежливым просьбам с упорством осла противитесь... |
|||
64
sapphire
18.02.13
✎
15:18
|
(62) $ОбщийРеквизит.{Имя реквизита}
|
|||
65
sapphire
18.02.13
✎
15:19
|
(62) Скорее всего да, у Вас что , нет конфигурации и Вы пишете вслепую?
|
|||
66
bananan
18.02.13
✎
15:21
|
(64) Написал текст запроса такой:
|SELECT | Жур.IDDoc as [Документ $Документ], | $ОбщийРеквизит.Автор, | Жур.IDDocDef as Док_вид |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная OR | Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН"; выдает: Для типизации поля "Документ", не найдено дополнительное типизирующее поле. |
|||
67
bananan
18.02.13
✎
15:23
|
с (66) разобрался я там что=-то намутил
|
|||
68
bananan
18.02.13
✎
15:23
|
но, общий реквезит выдает число - видимо ид КАК мне вывести текстовое значение Автор?
|
|||
69
sapphire
18.02.13
✎
15:26
|
(66)
(66) |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, $ОбщийРеквизит.Автор --а автора типизировать не надо, да? //|, Жур.IDDocDef as Док_вид |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная //| OR Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН" |UNION ALL |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладнаяН] |, $ОбщийРеквизит.Автор //|, Жур.IDDocDef as Док_вид |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ //| AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН" |
|||
70
sapphire
18.02.13
✎
15:26
|
(68) Тип в конфигураторе посмотри
|
|||
71
Mikeware
18.02.13
✎
15:27
|
(68) а документацию читать не пробовал?
|
|||
72
sapphire
18.02.13
✎
15:27
|
|SELECT
| Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, $ОбщийРеквизит.Автор --а автора типизировать не надо, да? //|, Жур.IDDocDef as Док_вид |FROM | _1SJourn as Жур (NOLOCK) |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная //| OR Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН" |UNION ALL |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладнаяН] |, $ОбщийРеквизит.Автор //|, Жур.IDDocDef as Док_вид |FROM | _1SJourn as Жур (NOLOCK) |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ //| AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН |
|||
73
sapphire
18.02.13
✎
15:27
|
(71) Он читать прямо не умеет, только косо и вскользь
|
|||
74
Mikeware
18.02.13
✎
15:28
|
(65) не только вслепую, но еще и втупую...
|
|||
75
Mikeware
18.02.13
✎
15:29
|
(73) и когда он ее читал? хотя бы "криво и вскользь"?
в том, что ему посоветовали в декабре - это в первом десятке строк написано... |
|||
76
bananan
18.02.13
✎
15:29
|
А как типизировать $ОбщийРеквизит.Автор?
|
|||
77
sapphire
18.02.13
✎
15:30
|
(75) Жаль что он не дубовом серит... Я б на (76) ответил...
|
|||
78
sapphire
18.02.13
✎
15:30
|
(76) Тип посмотри в конфигураторе.
|
|||
79
bananan
18.02.13
✎
15:31
|
Забыл я как посмотреть общие реквизиты, сейчас посмотрел Автор - это ТОЧНО общи1 реквизит. так как егео типизировать?
|
|||
80
sapphire
18.02.13
✎
15:31
|
(75) Следующий вопрос будет как посмотреть тип общего реквизита в конфигураторе?
:'( |
|||
81
sapphire
18.02.13
✎
15:31
|
юю занавес
|
|||
82
bananan
18.02.13
✎
15:31
|
(80) намек понял
|
|||
83
sapphire
18.02.13
✎
15:32
|
дейін нені? ?ой жетуге ?ажетке не бы мынадай жаз-, и??
|
|||
84
bananan
18.02.13
✎
15:32
|
Тип орбщего реквизхита Автор - Справочник.Сотрудники
|
|||
85
bananan
18.02.13
✎
15:33
|
(83) Это что молдавский или киргизский мат? :)
|
|||
86
sapphire
18.02.13
✎
15:33
|
(84) И? ыволдмшцуан!!!!!!
|
|||
87
sapphire
18.02.13
✎
15:33
|
(85) Угадай
|
|||
88
Mikeware
18.02.13
✎
15:33
|
(83)(86) этчо за слова такие?
|
|||
89
sapphire
18.02.13
✎
15:34
|
(88) Это нет слов просто :)))))))))))
|
|||
90
sapphire
18.02.13
✎
15:35
|
(84) Хлопче, а ты Котляревского хоть читал?
|
|||
91
bananan
18.02.13
✎
15:35
|
(86) либо молдавский либо какой-то азиатский, а судя с (88) этого языка не только я не знаю
|
|||
92
bananan
18.02.13
✎
15:35
|
(90) Читал, но давно еще в школе
|
|||
93
sapphire
18.02.13
✎
15:36
|
(92) Это сколько лет назад?
|
|||
94
sapphire
18.02.13
✎
15:37
|
(91) Ладно, тебе чё важней как типизировать алаи что за хня написана в тех постах?
|
|||
95
bananan
18.02.13
✎
15:39
|
Типизировал и получилось
Типизировал так: |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |
|||
96
sapphire
18.02.13
✎
15:40
|
(95) И? Чё в итоге-то, получилось али как?
|
|||
97
bananan
18.02.13
✎
15:49
|
До получилось - еще очень долго :(
А получилось выдает на гора номер документа и автора документа за выбраный период.. |
|||
98
sapphire
18.02.13
✎
15:50
|
(97) И чо?
|
|||
99
bananan
18.02.13
✎
15:52
|
Мне еще здесь же надо видеть ТМЦ из документа и номер строки документа в которой этот ТМЦ стоит,
на а потом уже функцию прикрутить (чтобы он выбирал строки в документе которые соответствут функции) |
|||
100
sapphire
18.02.13
✎
15:55
|
(99) Не вижу проблем
|
|||
101
bananan
18.02.13
✎
15:56
|
(100) Я сейчас попробую достучаться до тмц, а дальше уж точно без вашей помощи несправлюсь
|
|||
102
sapphire
18.02.13
✎
15:58
|
(101) А что так? Головка бо-бо?
|
|||
103
bananan
18.02.13
✎
16:00
|
До ТМЦ достучаться тоже вроде не получается:
ТекстЗапроса = " |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, $Документ.ТМЦ [ТМЦ $Справочник.ТМЦ] |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная |UNION ALL |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладнаяН] |, $ОбщийРеквизит.Автор |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН"; выдает: Meta name parser error: объект не найден "$Документ.ТМЦ" |
|||
104
sapphire
18.02.13
✎
16:02
|
(103) Сказочный долбo-job (с)
|
|||
105
sapphire
18.02.13
✎
16:03
|
(103) А ты стучаться до ТМЦ куда ходишь?
|
|||
106
bananan
18.02.13
✎
16:06
|
104-105 ТМЦ, понятно берем из РасходнаяНакладная или из РасходнаяНакладнаяН
|
|||
107
Mikeware
18.02.13
✎
16:06
|
(104) не.... даже в сказках таких не бывает...
блин, ну я понимаю - первый день. ну первую неделю... даже первый месяц... но тут уже два месяца только с 1с++... |
|||
108
sapphire
18.02.13
✎
16:06
|
(106) Idiotten, это и так ясно, но где этот реквизит хранится физически?
|
|||
109
sapphire
18.02.13
✎
16:07
|
(106) Ты чо настолько туп что не можешь понять разницу шапка/табличная часть?
|
|||
110
bananan
18.02.13
✎
16:09
|
нет я не туп - ТМЦ храниться в табличной части документов РасходнаяНакладная и РасходнаяНакладнаяН
|
|||
111
Ёпрст
18.02.13
✎
16:09
|
(0) читай с начала, где и что хранится
http://www.script-coding.com/v77tables.html |
|||
112
sapphire
18.02.13
✎
16:11
|
(110) Как на "туп" откликаться, так это ты мастак, эдак тебя рас так, и еще три раза, что ж ты тогда в (103) ерунду пишешь?
|
|||
113
sapphire
18.02.13
✎
16:11
|
зараза :)
|
|||
114
sapphire
18.02.13
✎
16:12
|
(110) тебе inner join надо сделать с табличной частью
|
|||
115
sapphire
18.02.13
✎
16:12
|
(110) Что такое inner join из (114) и почему так?
|
|||
116
bananan
18.02.13
✎
16:14
|
читаю и чего-то непонимаю:
3.3.2.4. Пример 4 Получение всех документов одного вида со всеми реквизитами шапки (включая все общие и системные реквизиты) а также всех реквизитов табличной части с фильтром по дате документа (документов за один день). В этом примере необходимо учесть, что дата документа храниться в SQL и DBF формате базы по-разному. Но, в любом случае, дата документа храниться в таблице журналов _1SJOURN, рассмотрим пример для SQL базы: SELECT TabJ.*, Tab1.*, Tab2.* FROM DH14 As Tab1 INNER JOIN _1SJOURN As TabJ ON (Tab1.IDDOC = TabJ.IDDOC) INNER JOIN DT14 As Tab2 ON (Tab1.IDDOC = Tab2.IDDOC) WHERE LEFT(TabJ.DATE_TIME_IDDOC,8) = '20050219' Где здесь реквизиты табличной части и зачем два ынер джоина? |
|||
117
bananan
18.02.13
✎
16:15
|
иннер джоин - насколько я понимаю - внутреннеэ соединение
|
|||
118
bananan
18.02.13
✎
16:15
|
а зачем - не понимаю
|
|||
119
Ёпрст
18.02.13
✎
16:16
|
(116)
DH14 - табличка шапки дока _1SJOURN - табличка документов DT14 - табличка табличной части документа ЗЫ: читай вниматочнее |
|||
120
sapphire
18.02.13
✎
16:17
|
(117) А что это значит?
|
|||
121
sapphire
18.02.13
✎
16:17
|
(118) Вот для того, что бы твоя светлость хоть что-то понимала тебе и присоветовали штудировать Бен-гана...
|
|||
122
Ёпрст
18.02.13
✎
16:18
|
(118)
wiki:Join_(SQL) |
|||
123
bananan
18.02.13
✎
16:18
|
(120) сейчас подумаю как сформулировать
|
|||
124
bananan
18.02.13
✎
16:19
|
соединяет несколько таблиц для вывода
|
|||
125
sapphire
18.02.13
✎
16:20
|
(124) Мля, мы это и так знаем, ты сам-то понимаешь КАК соединять и что?
|
|||
126
bananan
18.02.13
✎
16:21
|
(122) Это я знаю, но вот чтобы его применять на своем конкретном запросе.. пока я до этого - не дорос:(
|
|||
127
bananan
18.02.13
✎
16:22
|
(125) Чесно- говоря - слабо понимаю...
|
|||
128
sapphire
18.02.13
✎
16:24
|
(127) для того что бы писать нужно понимать что пишешь.
"сия?ты т?уір ?алады, ал алды, сия?ты ыл?и" (с) В цитате тебе, наверное, все понятно, да? |
|||
129
sapphire
18.02.13
✎
16:24
|
(126) Ты понимаешь по-шагово что ты хочешь сделать?
|
|||
130
Classic
18.02.13
✎
16:25
|
(126)
Для того, что б писать на 1С++ неплохо бы знать язык запросов. Если ты его не знаешь даже на самом примитивном уровне (что происходит при джойнах), то не взлетит. Пиши на православном 77. Начальнику объяснишь, что быстрее не получитсся |
|||
131
bananan
18.02.13
✎
16:26
|
из _1SJOURN - берем дату документа, а строки документа, насколько я понимаю - дл каждого документа своя таблица для хранения табличной части?
|
|||
132
bananan
18.02.13
✎
16:28
|
по-шагово:
выбрать 1. все документы за период времени. 2. в каждом документе смотрю ТМЦ и его цену и если эта цена "оршибочная" - мне нужен этот тмц с номером строки в документе ну и автором того документа |
|||
133
bananan
18.02.13
✎
16:29
|
определение - нормальна цена или ошибочна - надо функцию написать
|
|||
134
sapphire
18.02.13
✎
16:30
|
(131) ты близок к истине, наш юный поддаван
|
|||
135
sapphire
18.02.13
✎
16:30
|
(132) 1. все документы за период времени.
Отнюдь не все. |
|||
136
bananan
18.02.13
✎
16:31
|
да тлько документы РасходнаяНакладная и РасходнаяНакладнаяН
|
|||
137
sapphire
18.02.13
✎
16:31
|
(132)
2. в каждом документе смотрю ТМЦ и его цену и если эта цена "оршибочная" - мне нужен этот тмц с номером строки в документе ну и автором того документа Чего теперь не хватает - где храниться цена и какую цену надо получить |
|||
138
sapphire
18.02.13
✎
16:31
|
(136) Вот. Уже лучше.
|
|||
139
sapphire
18.02.13
✎
16:33
|
(132) Опять же, критерий ошибочности в том, что отгружаем в минус т.е. ниже прихолдной цены на момент документа, для того тебе вроде дата и нужна была...
|
|||
140
sapphire
18.02.13
✎
16:35
|
(136) Какие таблицы предстоит обработать запросом?
|
|||
141
bananan
18.02.13
✎
16:42
|
(140) таблицу в которой храняться номер документа и его автор
+ таблицы табличных частей документов + таблицу где справочник.ТМЦ вроде так |
|||
142
bananan
18.02.13
✎
16:44
|
ну а джоины нужны для связывания всех этих таблиц
|
|||
143
bananan
18.02.13
✎
16:46
|
т.е. чтобы достучаться до ТМЦ в таблицной части документа толже нужен Джони?
|
|||
144
sapphire
18.02.13
✎
16:54
|
(141) Неправильно.
|
|||
145
sapphire
18.02.13
✎
16:54
|
(142) Да.
|
|||
146
bananan
18.02.13
✎
16:58
|
Хорошо, вот взял пример из http://www.script-coding.com/v77tables.html#3.3.2.3. запустил, а она ругается:
\SERVER12\VPKTEST$\EXTFORMS\ЦІНАПОКАТЕГОРІЇ.ERT(177)}: State 42S02, native 208, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'DH14'. |
|||
147
bananan
18.02.13
✎
16:59
|
(144) То что неправильно понял, почему неправильно?
|
|||
148
bananan
18.02.13
✎
17:01
|
+(146) Прмер понятно немного переделал под себя:
| SELECT | TabJ.*, Tab1.*, Tab2.* |FROM | DH14 As Tab1 |INNER JOIN |_1SJOURN As TabJ ON (Tab1.IDDOC = TabJ.IDDOC) |INNER JOIN |DT14 As Tab2 ON (Tab1.IDDOC = Tab2.IDDOC) |WHERE |LEFT(TabJ.DATE_TIME_IDDOC,8) = '20120219'"; |
|||
149
bananan
18.02.13
✎
17:08
|
(149) Кто-нибудь может помояь?
|
|||
150
bananan
18.02.13
✎
17:14
|
Ладно, кто-нибудь, почему код (148) не проходит: ]Invalid object name 'DH14'.???
|
|||
151
bananan
18.02.13
✎
17:32
|
Ну вот например:
SELECT Спр.Code as Код, Спр.Descr as Наименование FROM sc433 as Спр Его можно запустить в QA Что такое QA? |
|||
152
Mikeware
18.02.13
✎
17:45
|
(146) потому, что НЕТ у тебя таблицы DH14.
НЕТ! СОВСЕМ НЕТ! ПОЛНОСТЬЮ НЕТ! ------------- когда ты прекратишь копипастить и начнешь думать? |
|||
153
Ёпрст
18.02.13
✎
17:47
|
(152) тут поможет только лечение током
|
|||
154
bananan
18.02.13
✎
17:47
|
(152) Да вот и думаю но как мне достучаться до ТМЦ в табличной части документа?
|
|||
155
bananan
18.02.13
✎
17:48
|
(153) К стати..
т 119 - 18.02.13 - 16:16 (116) DH14 - табличка шапки дока _1SJOURN - табличка документов DT14 - табличка табличной части документа ЗЫ: читай вниматочнее |
|||
156
bananan
18.02.13
✎
17:49
|
Так есть у меня DH14 или нет? и если нет, - то где искать ТМЦ из табличных чатей документво РасходнаяНакладная и РасходнаяНакладнаяН?
|
|||
157
Mikeware
18.02.13
✎
17:53
|
(156) сиквел говорит, что нету...
"искать ТМЦ из табличных чатей документво РасходнаяНакладная и РасходнаяНакладнаяН" нужно в табличных частях соответсвующих документах. Как они называются - все описано в документации... |
|||
158
bananan
18.02.13
✎
17:55
|
(157) как они нвзываются посмотрю в документации.
написал вот такой код: |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, $ДокС.ТМЦ as Товар |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная |UNION ALL |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладнаяН] |, $ОбщийРеквизит.Автор |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН"; ругается: Line 8: Incorrect syntax near 'dt1157' Что это за ошибка и в какой строке? |
|||
159
Mikeware
18.02.13
✎
17:58
|
(158) Ошибка - неверный синтаксис.
в 7 строке. или в шестой. просто от твоего тупняка сиквел окуевает, и руугается на восьмую... |
|||
160
bananan
18.02.13
✎
18:00
|
6 и 7-я строки
| _1SJourn as Жур | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) т.е. скорее всего ему не нравиться $ДокументСтроки.РасходнаяНакладная as ДокС ? |
|||
161
bananan
18.02.13
✎
18:36
|
Ребята, так что в код:
|SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная |UNION ALL |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладнаяН] |, $ОбщийРеквизит.Автор |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН"; напрямую (без добавления джоинов и тд) выбор тмц из табличнорй части документов ставить нельзя? |
|||
162
viktor_vv
18.02.13
✎
18:52
|
(161) Ну нету у тебя в таблице _1Sjourn данных о составе табличной части документа.
А в (158) ты определись вот тут как джойнить хочешь таблицы |FROM | _1SJourn as Жур | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) и по каким полям. |
|||
163
viktor_vv
18.02.13
✎
18:53
|
(162)+ Типа
|FROM | _1SJourn as Жур | Lefy join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | on ДокС.IDDOC = Жур.IDDOC |
|||
164
viktor_vv
18.02.13
✎
18:55
|
(163)*
|FROM | _1SJourn as Жур | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | on ДокС.IDDOC = Жур.IDDOC или inner, но ты условие на тип документа в Where ставишь, так что это разве что на скорость может повлиять. |
|||
165
Mikeware
18.02.13
✎
18:58
|
(162) ну не понимает он, что значит "по каким полям"....
понимаешь, "оно само должно"... |
|||
166
bananan
18.02.13
✎
19:00
|
(163) Спасибо, кажется понемногу начинаю понимать, но вот я такой запрос зделал:
|SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] | |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | on ДокС.IDDOC = Жур.IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная |UNION ALL |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладнаяН] |, $ОбщийРеквизит.Автор |FROM | _1SJourn as Жур | Left join $ДокументСтроки.РасходнаяНакладная as ДокН (nolock) | on ДокС.IDDOC = Жур.IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН"; так он не выбирает ТМЦ а где ему задать и как чтобы он выбирал ТМЦ? |
|||
167
bananan
18.02.13
✎
19:01
|
(165) Тебе мало той желчи что ты прымо на меня льещь, так ты еще и других подстрекаешь?
|
|||
168
viktor_vv
18.02.13
✎
19:05
|
(166)
Ты издеваешься, наверное. У тебя ж в (158) было правильно в Select прописана выборка ТМЦ, исправь там только From как в (166) и добавь выборку ТМЦ для второго Select как в первом, только из таблицы ДокН. |
|||
170
bananan
18.02.13
✎
19:09
|
Спасибо, и я не издеваюсь - просто я никак немогу понять всего этого
|
|||
171
Mikeware
18.02.13
✎
19:09
|
(169) "ты знал, ты знал!"©
|
|||
172
viktor_vv
18.02.13
✎
19:12
|
(171) :)).
|
|||
173
bananan
18.02.13
✎
19:12
|
+(170) Ято-то я таки не допонимаю. написал так:
|SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, $ДокН.ТМЦ as Товар |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | on ДокС.IDDOC = Жур.IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная |UNION ALL |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладнаяН] |, $ОбщийРеквизит.Автор |FROM | _1SJourn as Жур | Left join $ДокументСтроки.РасходнаяНакладная as ДокН (nolock) | on ДокС.IDDOC = Жур.IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН"; Ошибка: The column prefix 'ДокН' does not match with a table name or alias name used in the query. |
|||
174
bananan
18.02.13
✎
19:13
|
+(173) Но там же есть и ДОКС и ДОКН
|
|||
175
Mikeware
18.02.13
✎
19:14
|
Вроде достаточно понятно написано: колонки с префиксом ДокН нет в именах таблий или алиасов, используемых в запросе...
|
|||
176
bananan
18.02.13
✎
19:16
|
(175) А это что:
| Left join $ДокументСтроки.РасходнаяНакладная as ДокН (nolock) ? |
|||
177
bananan
18.02.13
✎
19:20
|
Т.е. вроде теперь, если я правильно понимаю, связываются таблицы - правильно..?
|
|||
178
bananan
18.02.13
✎
19:23
|
(175) Дак как по поводу альясов?
|
|||
179
sapphire
18.02.13
✎
19:24
|
(177) нет
|
|||
180
sapphire
18.02.13
✎
19:26
|
(170) Определись что именно понять ты не в силах
|
|||
181
Mikeware
18.02.13
✎
19:27
|
(180) он не может понять свю глубину того, что мешает му понять то, что он не в силах понять...
:-))) |
|||
182
bananan
18.02.13
✎
19:29
|
(179) Если из запроса убрать:
|, $ДокС.ТМЦ as Товар |, $ДокН.ТМЦ as Товар запрос работает, т.е. отсюда я и сделал вывод, что джоины заданы правильно.. а понять я не в силах почему ДокС и ДокН SQL говорит что они не определены в данном запросе... |
|||
183
bananan
18.02.13
✎
19:30
|
(181) Ты как всегда - на вершине (только вот на вершине чего?)
|
|||
184
sapphire
18.02.13
✎
19:41
|
(182) Соединения заданы как раз неверно
|
|||
185
bananan
18.02.13
✎
19:41
|
кто-нибудь почему:
|SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, $ДокС.ТМЦ as Товар |, $ДокН.ТМЦ as Товар |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | on ДокС.IDDOC = Жур.IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная |UNION ALL |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладнаяН] |, $ОбщийРеквизит.Автор |FROM | _1SJourn as Жур | Left join $ДокументСтроки.РасходнаяНакладная as ДокН (nolock) | on ДокС.IDDOC = Жур.IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН"; неработает и пишет что ДокС что ДокН - неопределенны в данном запросе (хотя я вижу что они определены) |
|||
186
sapphire
18.02.13
✎
19:42
|
(182) невнимательность чем вызвана?
|
|||
187
bananan
18.02.13
✎
19:42
|
(184) почему неправильно и как будет правильно?
|
|||
188
bananan
18.02.13
✎
19:43
|
(186) коротко - семейные обстоятельства
|
|||
189
sapphire
18.02.13
✎
19:43
|
(187) я об этом тебя и спрашивал.
|
|||
190
sapphire
18.02.13
✎
19:44
|
(188) гонят из семьи?
|
|||
191
bananan
18.02.13
✎
19:49
|
невнимательность чем вызвана? а о чем ты спрашивал?
Да нет долго расказывать |
|||
192
sapphire
18.02.13
✎
19:51
|
(185) операторы об'единения исключения должны иметь равное количество полей в запросах
|
|||
193
sapphire
18.02.13
✎
19:52
|
(191) в том, что в одном месте опечатка а дальше лезет ахинея
|
|||
194
sapphire
18.02.13
✎
19:53
|
(191) Ну не может человек в норме так ошибаться
|
|||
195
bananan
18.02.13
✎
19:55
|
Ладно я относительно в норме.
О семеныхобстоятельствах. почти год назад умерла моя мама. в ноялбре прошлого года умерла моя сестра. моя жена все это время бухает и говорит что я во всем виновати и что я ничего не делаю |
|||
196
bananan
18.02.13
✎
19:57
|
а где в (185) надо равноре количесвто полей поставить?
|
|||
197
sapphire
18.02.13
✎
20:00
|
(195) Бухает запойно? Работает?
Если сильно прямо надо аж горит, можно посолить. Коли научится надо, то терпи... Часть подскажем, но и свою голову иметь надо. |
|||
198
sapphire
18.02.13
✎
20:01
|
(196) Из верхнего убрать докн
|
|||
199
sapphire
18.02.13
✎
20:06
|
В нижний вставить.
|
|||
200
sapphire
18.02.13
✎
20:07
|
Исправить в нижнем условие соединения, там опечатка в алиасе
|
|||
201
sapphire
18.02.13
✎
20:09
|
Порядок следования полей документ,товар, автор должен быть одинаковым.
|
|||
202
viktor_vv
19.02.13
✎
01:24
|
(173) Ты таки не успел скопипастить (169) :)). Я ж намекал, что быстрее надо :).
|
|||
203
chelentano
19.02.13
✎
07:22
|
(195) твоя жена права, ты действительно ничего не делаешь
|
|||
204
Mikeware
19.02.13
✎
07:55
|
(203) самое смешное, что даже и не пытается.
|
|||
205
chelentano
19.02.13
✎
07:57
|
(204) имхо, это тролль какой-нибудь, таких тупых людей не бывает
|
|||
206
Wobland
19.02.13
✎
08:15
|
(205) а я верю в искренность автора.
кстати, по вашим советам заимел себе Ицика, почитываю. очень увлекательно, спасибо. чувствую, узнаю много нового ;) "недостаток" (как, впрочем, всех научных или околонаучных книг) один - нельзя читать по диагонали. а наш bananan и так с трудом читает и думает |
|||
207
Mikeware
19.02.13
✎
08:47
|
(205) иногда тоже возникает такое чувство...
за 4-то года можно научится читать документацию, пользоваться отладчиком... а с другой стороны смотришь на его темы - он и в самом деле такой... |
|||
208
sapphire
19.02.13
✎
12:25
|
(207) Не, Мишь, ник передают из рук в руки, ИМХО
|
|||
209
Mikeware
19.02.13
✎
12:28
|
(208) стиль одинаков во всех постах...
|
|||
210
sapphire
19.02.13
✎
12:53
|
(209) Ну я старьё не смотрел
|
|||
211
Wobland
19.02.13
✎
14:33
|
а вот Ицик говорит про unknown. Если зарплата (поле1) равна NULL, выражение принимает значение unknown. у меня разрыв шаблона. как они связаны между собой - unknown и NULL?
|
|||
212
sapphire
20.02.13
✎
09:47
|
(211) Семантически, т.е. сравнение NULL с чем либо дает FALSE,
по сути, NULL и есть UNKNOWN, так в Analysis Services (SSAS) значению NULL можно присвоить какое-либо нужное значение путем настройки трех свойств служб Analysis Service: свойства UnknownMember и UnknownMemberName используются для измерений, а свойство NullProcessing — для ключевых атрибутов измерений. http://msdn.microsoft.com/ru-ru/library/ms170707(v=sql.90).aspx |
|||
213
Wobland
20.02.13
✎
10:12
|
(212) >по сути, NULL и есть UNKNOWN
ну я как-то так для себя и определил. NULL - значение, UNKNOWN - тип. грубо говоря ;) |
|||
214
sapphire
20.02.13
✎
16:48
|
Что-то пропал наш ТС...
|
|||
215
bananan
21.02.13
✎
11:47
|
(214) Я уже появился :)
Так вот у меня такой текст запроса: ТекстЗапроса = " |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, $ДокС.ТМЦ as Товар |, $ДокН.ТМЦ as Товар |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | on ДокС.IDDOC = Жур.IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная |UNION ALL |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладнаяН] |, $ОбщийРеквизит.Автор |FROM | _1SJourn as Жур | Left join $ДокументСтроки.РасходнаяНакладная as ДокН (nolock) | on ДокС.IDDOC = Жур.IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН"; Он не проходит: ]The column prefix 'ДокН' does not match with a table name or alias name used in the query. Что здесь не так? |
|||
217
Rie
21.02.13
✎
11:50
|
(215) Так он ведь действительно "not match". У тебя ведь ровно одна таблица. Какие там алиасы ты во втором члене UNION написал - это в пользу бедных.
|
|||
218
bananan
21.02.13
✎
11:51
|
(217) ТЬаблиц - две, одна по документу РасходнаяНакладная, вторая по документу РасходнаяНакладнаяН!
|
|||
219
Rie
21.02.13
✎
11:53
|
(218) Ты не понимаешь, как работает UNION.
|
|||
220
Mikeware
21.02.13
✎
11:53
|
(215) Ты догадываешься, что у каждого ключевого слова в SQL есть русский аналог (перевод)?
ну так вот, _переведи_ все на русский. Десяток слов - несложно... и посмотри на русском - что ж ты такое пишешь... |
|||
221
Wobland
21.02.13
✎
11:53
|
(218) на какой странице у Ицика про юнион рассказано?
|
|||
222
Mikeware
21.02.13
✎
11:53
|
+(219) ибо не читал документацию.
|
|||
223
Wobland
21.02.13
✎
11:56
|
+(221) 200. это глава 6, не заблудись
|
|||
224
bananan
21.02.13
✎
11:57
|
(221) стр. 199 можешь проверить
(222) документацию я читал, еще не проникся я этим |
|||
225
Mikeware
21.02.13
✎
11:58
|
(221)
Вопрос на пятерку: написать запос с юнион. вопрос на четверку: что у ицика написано про юнион? вопрос на тройку: на какой странице у ицика написано про юнион вопрос на двойку: какого цвета книжка ицика? :-))) |
|||
226
Wobland
21.02.13
✎
12:00
|
(225) чорт! я на двойку не сдал
|
|||
227
Mikeware
21.02.13
✎
12:03
|
(226) мне хуже. я даже не знаю, кто такой ицик. :-(((
|
|||
228
Wobland
21.02.13
✎
12:05
|
(227) Эци?х (от груз. цихэ (????) — тюрьма, крепость[2]) — вымышленное исправительное учреждение и вид наказания на Плюке.
|
|||
229
Mikeware
21.02.13
✎
12:07
|
(228) как хорощо, что я не знаю, что такое ицик :-)))
|
|||
230
Ёпрст
21.02.13
✎
12:07
|
(221) 198
|
|||
231
Волесвет
21.02.13
✎
12:08
|
на одном из собеседований, меня с придыханием спросили знаю ли я прямые запросы, причем у спрашивающего лежала тооолстая книжка по запросам и он повидимому очень этим гордился, ну я и ответил, что мол в фоксе втором работал и весь синтаксис запросов можно на листочке написать))
|
|||
232
bananan
21.02.13
✎
12:14
|
Очень полезная информация от вас идет!
Какого цвета книжка Ицика - не знаю - закачал электронную версию... |
|||
233
Rie
21.02.13
✎
12:15
|
(232) Что такое UNION и с чем его едят - разобрался?
|
|||
234
Wobland
21.02.13
✎
12:18
|
(232) похоже, тут все двоечники
|
|||
235
bananan
21.02.13
✎
12:18
|
(233) Union двух таблиц возвратит все записи из обоих таблиц
|
|||
236
Wobland
21.02.13
✎
12:19
|
(235) ОБЪЕДИНИТЬ в православной 1Ске их сгруппирует
|
|||
237
bananan
21.02.13
✎
12:20
|
А все-таки почему :
The column prefix 'ДокН' does not match with a table name or alias name used in the query. Если ДокН в запросе: | Left join $ДокументСтроки.РасходнаяНакладная as ДокН (nolock) |
|||
238
Wobland
21.02.13
✎
12:20
|
+(236) сильно подозреваю, что в кошерном SQL тоже. против чего и придумано слово ALL
|
|||
239
Wobland
21.02.13
✎
12:20
|
(237) ну нету у тебя алиаса такого в первой таблице
|
|||
240
Rie
21.02.13
✎
12:22
|
(237) Потому что алиасы второй, третьей и всех последующих таблиц UNION ничегошеньки не значат. Они просто игнорируются. Ибо таблица в результате UNION - ровно одна.
|
|||
241
bananan
21.02.13
✎
12:22
|
(239) Первая таблица (в моем запросе) это ДокС?
|
|||
242
Wobland
21.02.13
✎
12:22
|
и заготовь ответ на вопрос "зачем у меня количество полей разное?"
|
|||
243
Wobland
21.02.13
✎
12:23
|
(241) да
|
|||
244
bananan
21.02.13
✎
12:23
|
(240) Хорошо, а как тогда мне достучаться до $ДокументСтроки.РасходнаяНакладная и$ДокументСтроки.РасходнаяНакладнаяН (это и есть товары или ТМЦ)??
|
|||
245
Wobland
21.02.13
✎
12:24
|
(244) объедини их
|
|||
246
bananan
21.02.13
✎
12:24
|
(243) Уже немного начинаю вникать, а где в ДокС объявить или вернее, выбрать поля?
|
|||
247
Rie
21.02.13
✎
12:25
|
Вот твой запрос в чуть-чуть причёсанном виде:
ТекстЗапроса = " |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, Накладные.Товар |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | Left join | (SELECT | IDDOC, | $ДокС.Товар | FROM | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | UNION ALL | SELECT | IDDOC, | $ДокН.Товар | FROM | $ДокументСтроки.РасходнаяНакладная as ДокН (nolock) | ) Накладные | ON Жур.IDDOC=Накладные.IDDOC | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; |
|||
248
bananan
21.02.13
✎
12:25
|
(245) Я вроде как и пытаюсь их объеденить в своем запросе..
|
|||
249
Wobland
21.02.13
✎
12:26
|
(248) знавал я одну контору, которая два-три года жила с таким вот ОБЪЕДЕНИТЬ в запросе в печатной форме. обходились без печатной формы
|
|||
250
bananan
21.02.13
✎
12:27
|
(247) Причесаный тобой запрос - тоже не проходит:
Meta name parser error: поле таблицы не найдено "$ДокС.Товар" |
|||
251
bananan
21.02.13
✎
12:28
|
(249) ОООЧЕЕНЬ полезная информация!
|
|||
252
Wobland
21.02.13
✎
12:28
|
(250) что бы это значило?
(251) не дошло? |
|||
253
Wobland
21.02.13
✎
12:29
|
и это мы ещё не подошли к вопросу, почему источники в двух таблицах одинаковые
|
|||
254
viktor_vv
21.02.13
✎
12:30
|
(248) Ты копипасть быстрее (247) :)). А то потрут.
Mikeware таки хочет сделать из тебя человека разумного :). Не обижайся. |
|||
255
bananan
21.02.13
✎
12:30
|
(252) Я то доку читаю, а вот ты посты - нет!
|
|||
256
Rie
21.02.13
✎
12:30
|
(250) У тебя как реквизиты табличной части называются? Товар, ТМЦ или где?
|
|||
257
Rie
21.02.13
✎
12:31
|
(253) Там я очепятался. РасходнаяНакладнаяН (или как там она у ТС называется) во втором случае.
|
|||
258
Mikeware
21.02.13
✎
12:31
|
(254) для начала - хотя бы человека. про разумность речь пока не идет...
|
|||
259
Wobland
21.02.13
✎
12:31
|
(255) старайся понять эти странные буквы, когда читаешь
|
|||
260
bananan
21.02.13
✎
12:31
|
(254) На обиженых - воду возят
|
|||
261
viktor_vv
21.02.13
✎
12:31
|
(256) ТМЦ.
|
|||
262
bananan
21.02.13
✎
12:32
|
(259) И ты иногда пробуй понять что пишут!
|
|||
263
Rie
21.02.13
✎
12:33
|
Мляяя! Ему же ещё и IDDOCDEF вытащить надо! И [Документ $Документ], без указания вида!
|
|||
264
Ёпрст
21.02.13
✎
12:33
|
(247) как бэ иннер тогда уж там, раз так фильтр на датетайм задаешь.
|
|||
265
Wobland
21.02.13
✎
12:33
|
(262) здесь совета спрашиваешь ты, а не я. мне не советуй
|
|||
266
Mikeware
21.02.13
✎
12:33
|
(259) "12 декабря. Математичка буреет не по дням. Сегодня сказала, что я совсем не знаю математики и поставила мне в дневник какую-то цифру"©
|
|||
267
bananan
21.02.13
✎
12:33
|
(257) Это я уже увидел и исправил, все-равно выдает:
Meta name parser error: поле таблицы не найдено "$ДокС.Товар" |
|||
268
bananan
21.02.13
✎
12:34
|
(262) Я тебе и не советую...
|
|||
269
Wobland
21.02.13
✎
12:34
|
(267) попробуй поискать поле глазами. вдруг парсер тебя обманывает
|
|||
270
Rie
21.02.13
✎
12:35
|
(267) У тебя Товар или ТМЦ? Если ТМЦ - то $ДокС.ТМЦ
|
|||
272
bananan
21.02.13
✎
12:36
|
(263) Не понял...
|
|||
274
Mikeware
21.02.13
✎
12:38
|
нне нннаддаа ссориццааа, гарячиеее финскиеее парниии..
|
|||
275
bananan
21.02.13
✎
12:38
|
(270) Нет ДокС.Товар:
| (SELECT | IDDOC, | $ДокС.Товар | FROM | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) |
|||
276
Wobland
21.02.13
✎
12:38
|
(273) этак ты никогда ничему не научишься
|
|||
277
Rie
21.02.13
✎
12:39
|
(272) Документы разных видов у тебя? Значит, надо
|SELECT | Жур.IDDoc as [Документ $Документ] |, Жур.IDDOCDEF AS Документ_вид чтобы в результате запроса можно было понять, какого вида документ. |
|||
278
bananan
21.02.13
✎
12:39
|
(276) А чему можно у ТЕБЯ научиться? поливать грязью всех и вся - так мне это не надо
|
|||
279
Wobland
21.02.13
✎
12:39
|
(275) это просто праздник какой-то
|
|||
280
bananan
21.02.13
✎
12:40
|
(277) Вродя понял...
но прчем вид документа к Meta name parser error: поле таблицы не найдено "$ДокС.Товар"??? |
|||
281
Rie
модератор
21.02.13
✎
12:41
|
(278) Ты сюда поругаться пришёл? Или всё же по теме спросить?
|
|||
282
viktor_vv
21.02.13
✎
12:41
|
(275) Да в конфигураторе какой идентификатор реквизита? Ты ж украинскую бухию мучаешь, там ТМЦ, а не Товар.
|
|||
283
Rie
21.02.13
✎
12:42
|
(280) Ни при чём. Я не знал, как у тебя реквизиты называются - вот и написал Товар. Если он у тебя - ТМЦ, то и пиши ТМЦ, а не Товар.
|
|||
284
bananan
21.02.13
✎
12:42
|
+(280) И, поверте мне, это все не шутки и не стеб я очень хочу во всем этом разобратьтся и мне ОЧЕНЬ нужно в этом разобраться
|
|||
285
Rie
21.02.13
✎
12:42
|
И, кстати, учти замечание Ёпрст (264).
|
|||
286
Wobland
21.02.13
✎
12:44
|
(284) начни читать и думать, ну тыщу раз говорили ж
|
|||
287
bananan
21.02.13
✎
12:44
|
(283) Да у меня украинская конфа, исправил Товар на ТМЦ, а все осталось ..
Invalid column name 'ТМЦ'. |
|||
288
Wobland
21.02.13
✎
12:45
|
(287) теперь Номенклатуру попробуй. а вдрпуг?
|
|||
289
bananan
21.02.13
✎
12:45
|
Ок, еще раз смотрб что наваял и озвучиваю русским языком:
может так будет проще разобраться мне ну и вам мне подсказасть |
|||
290
bananan
21.02.13
✎
12:47
|
(288) Не-а, смотрел в конфигураторе в обоих документах в табличной части - ТМЦ
|
|||
291
Wobland
21.02.13
✎
12:47
|
(290) подсказываю: неправильное имя поля
|
|||
292
Rie
21.02.13
✎
12:48
|
(290) Телепатирую: ты, случаем во внешнем запросе вместо Накладная.Товар - Накладная.ТМЦ не написал?
|
|||
293
Rie
21.02.13
✎
12:49
|
+(292) Спокойно и последовательно разберись с именами полей - и наступит счастье.
|
|||
294
bananan
21.02.13
✎
12:49
|
(292) Там я ничего не писал - скопирывал из одно подсказки:
|, Накладные.ТМЦ |
|||
295
bananan
21.02.13
✎
12:50
|
+(292) А как надо написать?
|
|||
296
Rie
21.02.13
✎
12:51
|
(295) Не знаю, как у тебя сейчас запрос выглядит. Но Invalid column name говорит SQL, а не метапарсер. Поэтому предполагаю, что имена реквизитов ты правильно написал, а вот с алиасами - напутал.
|
|||
297
Mikeware
21.02.13
✎
12:52
|
(293) ты сам-то понял, что сказал? :-)
|
|||
298
bananan
21.02.13
✎
12:52
|
Ок. сейчас текст запроса такой:
|SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, Накладные.ТМЦ |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | Left join | (SELECT | IDDOC, | $ДокС.ТМЦ | FROM | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | UNION ALL | SELECT | IDDOC, | $ДокН.ТМЦ | FROM | $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) | ) Накладные | ON Жур.IDDOC=Накладные.IDDOC | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; и я не вижу здесь путаницы с алиясами... |
|||
299
Rie
21.02.13
✎
12:53
|
(297) Эээ... А какая буква в (293) - неправильная?
|
|||
300
Wobland
21.02.13
✎
12:54
|
триста!
|
|||
301
Rie
21.02.13
✎
12:55
|
(298) Блииин... Извини, тут я был невнимателен. Конечно же надо алиас задать.
(SELECT | IDDOC, | $ДокС.ТМЦ AS ТМЦ | FROM | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | UNION ALL | SELECT | IDDOC, | $ДокН.ТМЦ |
|||
302
Wobland
21.02.13
✎
12:55
|
(299) Спокойно и последовательно разберись
|
|||
303
Wobland
21.02.13
✎
12:57
|
(300) 426 постов - личный рекорд ТС. догоним и перегоним?
|
|||
305
Rie
21.02.13
✎
12:58
|
+(301) Потому что после метапарсера 1С-овское ТМЦ превратится в SQL-евское SP12345 или что-то подобное.
|
|||
306
Mikeware
21.02.13
✎
12:58
|
(299) буква "разберись". у ТС ее нету в алфавите...
|
|||
307
bananan
21.02.13
✎
13:03
|
(301) Похоже так оно и есть... Ребята, я на несколько мягко говоря голов ниже вас потому что вы подсказываете по запросу - опипастю в основном не разбираясь
|
|||
308
Wobland
21.02.13
✎
13:04
|
(307) "в основном" здесь явно лишнее
|
|||
309
Mikeware
21.02.13
✎
13:06
|
+(308) и не "полсказки" копипастит, а целиком написанное, не разбираясь...
|
|||
310
trad
21.02.13
✎
13:15
|
(298) фигня же написана
как можно ссылку на РасходнаяНакладнаяН типизировать как РасходнаяНакладная? |
|||
311
trad
21.02.13
✎
13:15
|
+ да и юнион какой то
|
|||
312
bananan
21.02.13
✎
13:16
|
(311) А как иначе- чтбы не фигня была?
|
|||
313
Mikeware
21.02.13
✎
13:17
|
(310)(311)
Верблюда о спросили: «Верблюд, а почему у тебя шея кривая?». А он в ответ: «А что у меня прямое?» © |
|||
314
Mikeware
21.02.13
✎
13:17
|
(312) написать правильно
|
|||
315
bananan
21.02.13
✎
13:18
|
В результате запрос:
|SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, Накладные.ТМЦ |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | Left join | (SELECT | IDDOC, | $ДокС.ТМЦ AS ТМЦ | FROM | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | UNION ALL | SELECT | IDDOC, | $ДокН.ТМЦ | FROM | $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) | ) Накладные | ON Жур.IDDOC=Накладные.IDDOC | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; работает. но уж что-то очень медленно.. запустил с периодом 12.12.12. по 12.12.12 - уже две минуты маслает.. |
|||
316
Wobland
21.02.13
✎
13:20
|
(315) а всё от того, что сначала оно тебе объединяет документы, а потом уже, снаружи выкидывает не проходящие по периоду
|
|||
317
Wobland
21.02.13
✎
13:21
|
(316) вот кому я это сказал? вроде объяснил, а толку?
|
|||
318
Mikeware
21.02.13
✎
13:22
|
(317) тоже самое хотел у тебя спросить...
|
|||
319
trad
21.02.13
✎
13:23
|
судя по тексту нужно наверно это?
|SELECT | Жур.IDDoc as [Документ $Документ] |, Жур.IdDocDef as Документ_вид |, isnull($ДокС.ТМЦ, $ДокС.ТМЦ) as [ТМЦ $Справочник.Номенклатура]--туту нужно указать правильный вид справочника, если он другой |, $ОбщийРеквизит.Автор as [Автор $Справочник.Сотрудники] |FROM _1SJourn as Жур (nolock) |Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная |Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН |WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) |
|||
320
bananan
21.02.13
✎
13:23
|
(316-317) А как иначе это сделать?
|
|||
321
trad
21.02.13
✎
13:24
|
*
вместо isnull($ДокС.ТМЦ, $ДокС.ТМЦ) надо isnull($ДокС.ТМЦ, $ДокН.ТМЦ) |
|||
322
Wobland
21.02.13
✎
13:24
|
(320) вот отвечу я тебе - легче станет? период в подзапрос засунь
|
|||
323
Rie
21.02.13
✎
13:25
|
(315) См. (277) и _особенно внимательно_ - (264).
|
|||
324
trad
21.02.13
✎
13:25
|
(322) к чему он его в подзапросе пришьет?
|
|||
325
Mikeware
21.02.13
✎
13:26
|
(321) звиняй, но я хочу, чтоб эта мартышка хоть что-то сама сделала..
|
|||
326
Wobland
21.02.13
✎
13:26
|
(324) а, ну да. это ж, растак её, семёрка ;)
|
|||
327
Rie
21.02.13
✎
13:26
|
(316) Оно ещё хуже делает - поскольку LEFT JOIN.
На это выше Ёпрст указывал. |
|||
328
sapphire
21.02.13
✎
13:27
|
(327) А кто ему левый джойн присоветовал?
|
|||
329
bananan
21.02.13
✎
13:27
|
(322) Легче немного стало... а в какой подзапрос? 1-й или второй или как? Я в этом ноль без палочки
|
|||
330
trad
21.02.13
✎
13:27
|
эээ, че за херня!! куда (319) дели?
|
|||
331
bananan
21.02.13
✎
13:28
|
(330) я не брал...
|
|||
332
Rie
21.02.13
✎
13:28
|
(328) Он там изначально был, насколько я помню.
|
|||
333
Rie
21.02.13
✎
13:29
|
(329) В оба. Сначала INNER JOIN - а потом уже объединение.
И - INNER JOIN, а никак не LEFT. |
|||
334
trad
21.02.13
✎
13:30
|
(326) семерка то чем провинилась у вас?
|
|||
335
Rie
21.02.13
✎
13:30
|
+(333) Но перед издевательством над подзапросом - просто замени LEFT на INNER. И удивись.
|
|||
336
bananan
21.02.13
✎
13:31
|
(325) "Мартышка" думает и очень много сама делает... К стати меня не было два дня - писал прогу на Дельфи. Прогу показать?
|
|||
337
Mikeware
21.02.13
✎
13:31
|
(330) см (325)
|
|||
338
Rie
21.02.13
✎
13:31
|
(334) Тем, что через две точки не даёт писать :-)
|
|||
339
trad
21.02.13
✎
13:31
|
Кто прибил (319) верните пожалуйста на место.
|
|||
340
sapphire
21.02.13
✎
13:31
|
(329) Нуль обдолбанный, тебе же в пн написали что надо сделать
|
|||
341
bananan
21.02.13
✎
13:31
|
(335) Сейчас попробую
|
|||
342
Mikeware
21.02.13
✎
13:31
|
(336) не надо, я только что поел...
|
|||
343
Rie
21.02.13
✎
13:32
|
(336) НЕ НАДО!!!!!
|
|||
344
bananan
21.02.13
✎
13:32
|
(340) Что такое пн и где это??
|
|||
345
Mikeware
21.02.13
✎
13:32
|
(340) он не нуль, он минус :-)
|
|||
346
sapphire
21.02.13
✎
13:32
|
(344) пн=понедельник
|
|||
347
trad
21.02.13
✎
13:33
|
(325) нет это ты звиняй. у тебя нет прав на мой труд и на мое мнение. правил форума я не нарушал. так что будь добр верни.
|
|||
348
Wobland
21.02.13
✎
13:33
|
(336) ну если только две-три строчки
|
|||
349
viktor_vv
21.02.13
✎
13:33
|
(339) Это эксперимент по проверке теории Дарвина :)).
|
|||
350
bananan
21.02.13
✎
13:34
|
(335) Изменил и удивился - спасибо!!!
|
|||
351
Mikeware
21.02.13
✎
13:34
|
(347) ок. но вечером :-)
|
|||
352
sapphire
21.02.13
✎
13:34
|
(315) Зачем вообще такая конструкция?
Сделай хотя бы для одного вида документов правильно, потом для другого, а потом уже объединяй результат. |
|||
353
Wobland
21.02.13
✎
13:34
|
(325) первый раз ему готовое что-то дают, что он не может у себя применить, что ли?
|
|||
354
Privalov
21.02.13
✎
13:34
|
(336) Давай, интересно же.
|
|||
355
Ёпрст
21.02.13
✎
13:35
|
(339) а че там было ?
|
|||
356
Бертыш
21.02.13
✎
13:36
|
Да блин сразу в прямой запрос. Может быть обычного запроса бы хватило
|
|||
357
trad
21.02.13
✎
13:36
|
(351) не, ну пошутил и хватит. верни
|
|||
358
sapphire
21.02.13
✎
13:37
|
(355) Фигня какая-то еще один писарь свой шедевр предложил
|
|||
359
bananan
21.02.13
✎
13:37
|
(353) Где мне в этой ветке "что-то готовое" дали?
|
|||
360
Wobland
21.02.13
✎
13:37
|
(355) два лефт джойна. журнал с документами. больше не помню
|
|||
361
Privalov
21.02.13
✎
13:37
|
Где прога на дельфи!!! В студию. Может зря на человека шумим, а там шедевр. Сразу и уважение появится.
|
|||
362
Rie
21.02.13
✎
13:37
|
(349) Теория Дарвина утверждает, что обезьяна человеком станет лишь посмертно. А мы имеем дело с живым ТС.
|
|||
363
sapphire
21.02.13
✎
13:37
|
(356) Он уже делал обычным.
|
|||
364
Wobland
21.02.13
✎
13:37
|
(359) у тебя есть масса других, не менее увлекательных. искать не буду
|
|||
365
trad
21.02.13
✎
13:38
|
(358) кхм, я бы попросил ...
|
|||
366
bananan
21.02.13
✎
13:39
|
(356) Обычный запрос период месяц - обрабатывал 13 минут, потому и прямой запрос
|
|||
367
Rie
21.02.13
✎
13:40
|
(365) Там у тебя была ошибка, о которой ещё в (264) сказали.
|
|||
368
Privalov
21.02.13
✎
13:40
|
(366) Прогу на Дельфях покажи!!
|
|||
369
bananan
21.02.13
✎
13:40
|
(361) Никакого шедевра, что заказали - то и сделал...
|
|||
370
viktor_vv
21.02.13
✎
13:40
|
(362) Ну тогда теории Павлова, про условные рефлексы.
|
|||
371
Rie
21.02.13
✎
13:41
|
(368) Не надо. А то ветку в "Юмор" перенесу.
|
|||
372
Privalov
21.02.13
✎
13:41
|
(371) Зачем так жестоко, ты ж ее нее видел еще!
|
|||
373
trad
21.02.13
✎
13:42
|
(367) ты запрос то видел?
|
|||
374
bananan
21.02.13
✎
13:42
|
(368) http://us.ua/1043403/
|
|||
375
sapphire
21.02.13
✎
13:43
|
(369) На
ТекстЗапроса = " |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, $ДокС.ТМЦ as Товар //|, $ДокН.ТМЦ as Товар |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур (nolock) |inner join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) |on ДокС.IDDOC = Жур.IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная |UNION ALL |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладнаяН] |, $ДокН.ТМЦ as Товар |, Жур.$ОбщийРеквизит.Автор |FROM | _1SJourn as Жур (nolock) |Inner join $ДокументСтроки.РасходнаяНакладная as ДокН (nolock) | on ДокН.IDDOC = Жур.IDDOC |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладнаяН |
|||
376
Rie
21.02.13
✎
13:44
|
(374) Забанить за выкладывание вирусов? :-)
|
|||
377
Wobland
21.02.13
✎
13:44
|
(374) ну и на хрена нам твой екзешник?
|
|||
378
Privalov
21.02.13
✎
13:45
|
(374) Ну и какого ты ехе прислал? Что дураки есть запускать? Исходники давай, что нам с твоего ехе.
|
|||
379
Wobland
21.02.13
✎
13:45
|
а инишник доставляет ;)
|
|||
380
Rie
21.02.13
✎
13:45
|
(375) Ну и зачем проверка на IDDOCDEF, если INNER JOIN?
|
|||
381
trad
21.02.13
✎
13:46
|
(375) а вот тут я бы сказал - писарь
|
|||
382
Privalov
21.02.13
✎
13:46
|
(377) Не уважает
|
|||
383
trad
21.02.13
✎
13:46
|
(380) что бы в индекс попасть
|
|||
384
Wobland
21.02.13
✎
13:48
|
как называется человек, иллюстрирующий свою проф. состоятельность двоичным кодом?
|
|||
385
Ёпрст
21.02.13
✎
13:49
|
(373) coalesce красившее использовать, имхо
|
|||
386
Rie
21.02.13
✎
13:51
|
(373) Видел.
|
|||
387
bananan
21.02.13
✎
13:53
|
Звыняйте - код дом на работу взял готовые программы чтобы отдатьт заказчику
|
|||
388
Privalov
21.02.13
✎
13:53
|
(384) ТС перестал на нас реагировать или там очень секретная программа.))
Он ее два дня писал!!!!! |
|||
389
Privalov
21.02.13
✎
13:53
|
(387) Ха-ха.
|
|||
390
Rie
21.02.13
✎
13:54
|
+(386) Возможно, я ошибаюсь - но проверки в WHERE не компенсируют двойной LEFT JOIN.
Впрочем, готов положиться на мнение Ёпрст. |
|||
391
Privalov
21.02.13
✎
13:54
|
Не один нормальный закзчик не возьмет ехе с такими названиями ))
|
|||
392
trad
21.02.13
✎
13:55
|
(385) в данном случае не принципиально.
я всегда пишу если два параметра, то isnull. если более - coalesce. И чем красивше тогда, на твой взгляд? |
|||
393
trad
21.02.13
✎
13:56
|
(390) ошибаешься.
|
|||
394
bananan
21.02.13
✎
13:57
|
А по моему запросу...
Чтобы он выдавал не арбакадаьру в товаре надо типизацию сделать, насколько я понимаю... но по поводу самого запроса надо чтобы он еще к ТМЦ выдавл номер строки в документе где этот ТМЦ упоминается... - КАк это сделать? |
|||
395
bananan
21.02.13
✎
13:58
|
Пардон, Заказчик сказал о программе: надо написать программу лохотрон - потому и такое название...
|
|||
396
bananan
21.02.13
✎
14:02
|
Сделал типизацию: |, Накладные.ТМЦ as [$Справочник.ТМЦ]
теперь он выдает название ТМЦ как и надо, а как получить номер строки документа где этот ТМЦ упомянут? |
|||
397
Mikeware
21.02.13
✎
14:03
|
(396) достать оттуда гдн этот номер строки лежит...
|
|||
398
bananan
21.02.13
✎
14:05
|
(397) не понял это стеб или опечатка?:
"достать оттуда гдн этот номер строки лежит..." |
|||
399
trad
21.02.13
✎
14:05
|
пост 319 вернули, возьми его с учетом 321
|
|||
400
bananan
21.02.13
✎
14:06
|
Где можно узнать номер строки документа?
|
|||
401
bananan
21.02.13
✎
14:07
|
(399) Вижу, спасибо, но код запроса такой:
ТекстЗапроса = " |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, Накладные.ТМЦ as [$Справочник.ТМЦ] |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | INNER JOIN | (SELECT | IDDOC, | $ДокС.ТМЦ AS ТМЦ | FROM | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | UNION ALL | SELECT | IDDOC, | $ДокН.ТМЦ | FROM | $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) | ) Накладные | ON Жур.IDDOC=Накладные.IDDOC | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; Вполне подходит, только надо еще номер строки с ТМЦ в докменте узнать |
|||
402
Wobland
21.02.13
✎
14:07
|
(400) T=DT1611 |Документ (Мн.ч.) Реализация |A |DT1611 |1
#-----Fields------- # Name |Descr |Type|Length|Precision F=IDDOC |ID Document's |C |9 |0 F=LINENO |LineNo |N |4 |0 |
|||
403
trad
21.02.13
✎
14:07
|
(398) номера строк лежат в тех же таблицах что и ссылки на ТМЦ
получи их примерно так же как и ТМЦ |
|||
404
bananan
21.02.13
✎
14:09
|
(402-403) Спасибо, сейчас буду пробывать
|
|||
405
Wobland
21.02.13
✎
14:09
|
(404) что делыть?
|
|||
406
trad
21.02.13
✎
14:10
|
(402) подсказка не верна.
Приведен фрагмент DBF-ного словаря. Бедняга будет неделю искать LINENO тогда как такого поля нет и в SQL базе оно называется LINENO_ |
|||
407
Ёпрст
21.02.13
✎
14:11
|
(392) :)
параметров больше чем 2, как правило, мне лень isnull писать :) |
|||
408
bananan
21.02.13
✎
14:12
|
+404 Попробывал и сразу же облом...
НАписал запрос так: |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, Накладные.ТМЦ as [$Справочник.ТМЦ] |, Накладные.LINENO |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | INNER JOIN | (SELECT | IDDOC, | $ДокС.ТМЦ AS ТМЦ | ,$ДокС.LINENO | FROM | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | UNION ALL | SELECT | IDDOC, | $ДокН.ТМЦ | ,$ДокН.LINENO | FROM | $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) | ) Накладные | ON Жур.IDDOC=Накладные.IDDOC | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; рушается: Meta name parser error: поле таблицы не найдено "$ДокС.LINENO" |
|||
409
sapphire
21.02.13
✎
14:12
|
(401) Ну ты и баран, однако
|
|||
410
Wobland
21.02.13
✎
14:12
|
(408) так что сделыл?
|
|||
411
trad
21.02.13
✎
14:12
|
(407) так ведь заранее известно что их 2
|
|||
412
Wobland
21.02.13
✎
14:12
|
(406) искать? он тупо копипастит
|
|||
413
sapphire
21.02.13
✎
14:13
|
(408) Вообще идиот
|
|||
414
bananan
21.02.13
✎
14:13
|
(406) и так ругается:
Meta name parser error: поле таблицы не найдено "$ДокС.LINENO_" |
|||
415
bananan
21.02.13
✎
14:14
|
(409) Почему я - баран?
|
|||
416
bananan
21.02.13
✎
14:14
|
(413) А как получить номер строки?
|
|||
417
trad
21.02.13
✎
14:15
|
(413) может быть сам приведешь рабочий код? Потому как в (375) код не рабочий
|
|||
418
viktor_vv
21.02.13
✎
14:15
|
(416) В табличной части дока поле LineNo_.
|
|||
419
sapphire
21.02.13
✎
14:16
|
(415) Потому что тебе запрос нормальный дали
|
|||
420
Wobland
21.02.13
✎
14:16
|
(418) вот ты ему сейчас очень помог
|
|||
421
Ёпрст
21.02.13
✎
14:16
|
(411) с тобой не поспоришь :)
Да и на бентли не накопишь. Ща погоди, аутор еще пару доков добавит |
|||
422
sapphire
21.02.13
✎
14:17
|
(417) И чем он нерабочий, просвяти, нас:)
|
|||
423
Wobland
21.02.13
✎
14:17
|
(419) ему указание надо: копипастить вот это
|
|||
424
viktor_vv
21.02.13
✎
14:18
|
(423) Я в него все еще верю :)).
|
|||
425
bananan
21.02.13
✎
14:18
|
(418) Текст запроса:
|SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, Накладные.ТМЦ as [$Справочник.ТМЦ] |, Накладные.LINENO_ |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | INNER JOIN | (SELECT | IDDOC, | $ДокС.ТМЦ AS ТМЦ | ,$ДокС.LINENO_ | FROM | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | UNION ALL | SELECT | IDDOC, | $ДокН.ТМЦ | ,$ДокН.LINENO_ | FROM | $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) | ) Накладные | ON Жур.IDDOC=Накладные.IDDOC | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; Ругается: Meta name parser error: поле таблицы не найдено "$ДокС.LINENO_" |
|||
426
bananan
21.02.13
✎
14:18
|
(419) Где?
|
|||
427
Ёпрст
21.02.13
✎
14:19
|
(425) $ выкини
|
|||
428
Wobland
21.02.13
✎
14:19
|
(424) ну.. судя по тому, что он текстом запроса попадает в текст запроса, ещё не всё потеряно
|
|||
429
viktor_vv
21.02.13
✎
14:19
|
(418)+ Обращаться через алиас без $.
|
|||
430
sapphire
21.02.13
✎
14:19
|
(426) ты читать умеешь?
|
|||
431
Ёпрст
21.02.13
✎
14:20
|
(426) см. 319 + 321
|
|||
432
trad
21.02.13
✎
14:20
|
(422)давай я тоже поиздеваюсь. Скажу включи соображалку и подумай.
|
|||
433
sapphire
21.02.13
✎
14:21
|
(432) В том запросе суть конструкция запроса, а разыменование полей - пусть хоть что-то сделает сам уже
|
|||
434
bananan
21.02.13
✎
14:22
|
(427, 429) Спасибо!
(431) Сейчас посмотрю |
|||
435
trad
21.02.13
✎
14:24
|
(433)эээ, нет.
Не будем уходить от ответа. Там даже если опечатки исправить, но сохранить структуру запроса, а в частности состав селект-листа, то запрос будет выдавать чушь. |
|||
436
sapphire
21.02.13
✎
14:27
|
(435) Давай, объясни... На примере в чем же чушь?
|
|||
437
sapphire
21.02.13
✎
14:29
|
(435) Если уж на то пошло, то в его случае типизация на этом этапе вообще не нужна.
|
|||
438
Rie
21.02.13
✎
14:30
|
(398) Номер строки - это такое же поле, как и прочие.
|
|||
439
viktor_vv
21.02.13
✎
14:30
|
(435) и (436) я так понял можно идти за попкроном ?
|
|||
440
sapphire
21.02.13
✎
14:32
|
(435) Ты задачу-то его знаешь, нет?
|
|||
441
Rie
21.02.13
✎
14:32
|
(431) Просвети, пожалуйста, насчёт (390).
|
|||
442
trad
21.02.13
✎
14:33
|
(436) ты серьезно не видишь что в 375 кроме неправильной типизации документа не хватает еще и одного важного поля в выборке?
|
|||
443
sapphire
21.02.13
✎
14:35
|
(442) Цены там не хватает явно и добавить тип. Номер строки не так важен, и типизация не нужна.
|
|||
444
sapphire
21.02.13
✎
14:36
|
(442) А вот твой вариант с левым соединением будет работать явно медленней.
|
|||
445
trad
21.02.13
✎
14:36
|
(440) судя по его и твоему текстам запросов, выбрать документы двух видов за период с ТМЦ из этих документов и авторами этих документов. Нет?
|
|||
446
bananan
21.02.13
✎
14:38
|
А теперь посмотрел, но где и как здест вставить выбор номера строки документа?
|SELECT | Жур.IDDoc as [Документ $Документ] |, Жур.IdDocDef as Документ_вид |, isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as [ТМЦ $Справочник.ТМЦ] |, $ОбщийРеквизит.Автор as [Автор $Справочник.Сотрудники] |FROM _1SJourn as Жур (nolock) |Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная |Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН |WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) |
|||
447
trad
21.02.13
✎
14:40
|
(443) я не про цены и не про тип ТМЦ и не про номера строк.
Я про типизацию документа. У тебя в выборке присутствуют ссылки на документы разных видов, а ты их типизируешь одним единственным типом |
|||
448
viktor_vv
21.02.13
✎
14:40
|
(446) Строка будет очень похожа на это
|, isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as [ТМЦ $Справочник.ТМЦ] |
|||
449
sapphire
21.02.13
✎
14:40
|
(445) Не совсем, ему надо выбрать документы у которых цена при отгрузке ниже закупочной.
|
|||
450
bananan
21.02.13
✎
14:40
|
+(446) теперь надо сделать самое сложное - все эти строки с Тмц нужны только тогда, когда для данного ТМЦ установлена неправильная цена:
это делала функция: Функция Разность(Конт) //Перем кат,минцена,докцена; ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Автор"); ТЗ.НоваяКолонка("Товар"); ТЗ.НоваяКолонка("Ошибка"); ТЗ.НоваяКолонка("Стр"); Конт.ВыбратьСтроки(); ТЗ.Автор = Конт.Автор; ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Пока Конт.ПолучитьСтроку()=1 Цикл контТовар = Конт.ТМЦ; прихцена=Окр(КонтТовар.Цена_Прих.Получить(Конт.ДатаДок)*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)),2); докцена=Окр(?(Конт.Кво*Конт.Коэффициент=0,0,Конт.СуммаСНДС/(Конт.Кво*Конт.Коэффициент)),2); // ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); Если докцена<прихцена Тогда // ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має ціну нижчу за прихідну "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; //кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Если кат.Выбран()=1 Тогда минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2); Если докцена<минцена Тогда //3/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має надто низьку ціну="+докцена+" мiнимальна="+минцена; ТЗ.Стр = Конт.НомерСтроки; КонецЕсли; КонецЕсли; КонецЦикла; Возврат(ТЗ); КонецФункции |
|||
451
sapphire
21.02.13
✎
14:41
|
(447) И что? Ерунда. Ссылка это char(9) c типом - char(13)
|
|||
452
Mikeware
21.02.13
✎
14:42
|
хы. напрямую на требование написать для него запрос - его накуй послали. теперь толпа пишет ему это запрос по кусочкам :-)))
|
|||
453
sapphire
21.02.13
✎
14:42
|
(447) см (437)
|
|||
454
trad
21.02.13
✎
14:43
|
(446) по аналогии с ТМЦ
, isnull(ДокС.lineno_, ДокН.lineno_) as НомерСтроки_ и тут уже без $, так как lineno_ это не метаимя, а обычное имя обычного поля таблицы |
|||
455
sapphire
21.02.13
✎
14:44
|
(452) Ерунда, щас добрые люди ему скалярный запрос для определения цены предложат, как пить дать
|
|||
456
bananan
21.02.13
✎
14:44
|
(452) Ты, как всегда, - выше мирской суеты...
|
|||
457
trad
21.02.13
✎
14:46
|
(449) так какое это имеет отношение к (417) я же тебе пытаюсь доказать что структура твоего запроса - хрень
|
|||
458
bananan
21.02.13
✎
14:47
|
(454) Спасибо. Номер строки выбирается, хорошо,
А поп поводу конечного запроса значит в этом надо еще выбрать цену ТМЦ по документу и цену ТМЦ правильную и сравнить их если они не совпадают нам это и надо. ТАк? |
|||
459
trad
21.02.13
✎
14:50
|
(451) но ведь в твоем запросе нет char(13) и взять его неоткуда.
писать такое Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] в составном запросе из нескольких документов - принципальная ошибка |
|||
460
trad
21.02.13
✎
14:58
|
(458) осталось тебе для меня рассказать что такое "цена ТМЦ правильная"
|
|||
461
bananan
21.02.13
✎
14:59
|
(460) Честно говоря - понятия не имею, это делает функция:
Функция Разность(Конт) //Перем кат,минцена,докцена; ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Автор"); ТЗ.НоваяКолонка("Товар"); ТЗ.НоваяКолонка("Ошибка"); ТЗ.НоваяКолонка("Стр"); Конт.ВыбратьСтроки(); ТЗ.Автор = Конт.Автор; ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Пока Конт.ПолучитьСтроку()=1 Цикл контТовар = Конт.ТМЦ; прихцена=Окр(КонтТовар.Цена_Прих.Получить(Конт.ДатаДок)*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)),2); докцена=Окр(?(Конт.Кво*Конт.Коэффициент=0,0,Конт.СуммаСНДС/(Конт.Кво*Конт.Коэффициент)),2); // ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); Если докцена<прихцена Тогда // ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має ціну нижчу за прихідну "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; //кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Если кат.Выбран()=1 Тогда минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2); Если докцена<минцена Тогда //3/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має надто низьку ціну="+докцена+" мiнимальна="+минцена; ТЗ.Стр = Конт.НомерСтроки; КонецЕсли; КонецЕсли; КонецЦикла; Возврат(ТЗ); КонецФункции |
|||
462
trad
21.02.13
✎
15:02
|
(461) ты что думаешь, что я буду это разбирать?
|
|||
463
Mikeware
21.02.13
✎
15:04
|
(462) "назвался Лазо - полезай в топку!"©
|
|||
464
trad
21.02.13
✎
15:05
|
(463) да без проблем
|
|||
465
trad
21.02.13
✎
15:06
|
как понимаю тебе надо вот это загнать в запрос?
прихцена=Окр(КонтТовар.Цена_Прих.Получить(Конт.ДатаДок)*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)),2); докцена=Окр(?(Конт.Кво*Конт.Коэффициент=0,0,Конт.СуммаСНДС/(Конт.Кво*Конт.Коэффициент)),2); // ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); Если докцена<прихцена Тогда |
|||
466
Wobland
21.02.13
✎
15:06
|
бьётся в тесной печурке Лазо...
|
|||
467
sapphire
21.02.13
✎
15:09
|
(466) Ждем скалярный запрос определения цены...
|
|||
468
trad
21.02.13
✎
15:12
|
(467) конечно скалярный. У тебя какие то предубеждения на этот счет?
|
|||
469
sapphire
21.02.13
✎
15:13
|
(468) Давай хоть скалярный :)
|
|||
470
bananan
21.02.13
✎
15:14
|
(465) Да это и не только это...
|
|||
471
trad
21.02.13
✎
15:15
|
(470) какой вид справочника в СтавкаНДС?
|
|||
472
trad
21.02.13
✎
15:17
|
(469) Т.е. ты настаиваешь, что есть более приемлемый вариант? Не худший, не равнозначный, а именно лучший, более чем скалярный запрос?
|
|||
473
bananan
21.02.13
✎
15:24
|
(471) СтавкаНДС - это не справочник насколько я понял, сейчас ищу что это такое
|
|||
474
bananan
21.02.13
✎
15:26
|
В српвочнике ТМЦ ставкаНДс - это Справочник.ВидыНалогов
|
|||
475
viktor_vv
21.02.13
✎
15:28
|
(472) Подзапос в Select в его запросе, и там сразу фильтровать, не ?
|
|||
476
viktor_vv
21.02.13
✎
15:30
|
(475)+ Правда с этим немного геморно получится
"Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)". |
|||
477
bananan
21.02.13
✎
16:00
|
Пробывал так:
ТекстЗапроса = " |SELECT | Жур.IDDoc as [Документ $Документ.РасходнаяНакладная] |, СтавкаНДС as [$Справочник.ВидыНалогов] |, Накладные.ТМЦ as [$Справочник.ТМЦ] |, Накладные.LINENO_ |, $ОбщийРеквизит.Автор [Автор $Справочник.Сотрудники] |FROM | _1SJourn as Жур | INNER JOIN | (SELECT | IDDOC, | $ДокС.ТМЦ AS ТМЦ | ,ДокС.LINENO_ |, $ДокС.ТМЦ.СтавкаНДС | FROM | $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | UNION ALL | SELECT | IDDOC, | $ДокН.ТМЦ | ,ДокН.LINENO_ |, $ДокН.ТМЦ.СтавкаНДС | FROM | $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) | ) Накладные | ON Жур.IDDOC=Накладные.IDDOC | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; ругается: The column prefix 'ДокС.sp1171' does not match with a table name or alias name used in the query. Понятно, что я делаю совсем не так как нужно, но как нужно? |
|||
478
Wobland
21.02.13
✎
16:04
|
(477) нужно учиться соотносить получаемые ошибки с выполняемым текстом
|
|||
479
Wobland
21.02.13
✎
16:04
|
+(478) и пымнить о том, что двы точкы ныльзя с прымых запросых
|
|||
480
bananan
21.02.13
✎
16:13
|
(479) тоесть $ДокС.ТМЦ.СтавкаНДС нельзя.
А как здесь быть? |
|||
481
Анна_84
21.02.13
✎
16:14
|
извините за ОФФ: ребят, ну и терпения же у вас!
эх... мне б так работать... два дня на мисте потупить - и запрос коллективно напишут... |
|||
482
trad
21.02.13
✎
16:15
|
(474) если дословно интерпретировать, то вот пара вариантов.
Как больше нравится, разницы нет. |SELECT | Жур.IDDoc as [Документ $Документ] |, Жур.IdDocDef as Документ_вид |, isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as [ТМЦ $Справочник.ТМЦ] |, isnull(ДокС.lineno_, ДокН.lineno_) as НомерСтроки_ |, $ОбщийРеквизит.Автор as [Автор $Справочник.Сотрудники] |FROM _1SJourn as Жур (nolock) |Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная |Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН |left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) |WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) | AND ROUND(case when isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) = 0 then 0 else | isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) / isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) | end,2) < | ROUND($ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) * | (1+$ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime))),2) |
|||
483
trad
21.02.13
✎
16:15
|
или так
|SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | FROM _1SJourn as Жур (nolock) | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) |) Данные |WHERE ROUND(case Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |
|||
484
bananan
21.02.13
✎
16:21
|
(482) Это пара вариантов или это один из вариантов?
|
|||
485
trad
21.02.13
✎
16:23
|
(482) - это первый
(483) - это второй |
|||
486
trad
21.02.13
✎
16:23
|
и еще хотелось бы чтобы "инженер знаний" sapphire предложил свой вариант либо забрал свои слова из (358)
|
|||
487
bananan
21.02.13
✎
16:24
|
+(484) в коде вроде разобрался, у функции несколько видов "неправильной цены":
Функция Разность(Конт) //Перем кат,минцена,докцена; ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Автор"); ТЗ.НоваяКолонка("Товар"); ТЗ.НоваяКолонка("Ошибка"); ТЗ.НоваяКолонка("Стр"); Конт.ВыбратьСтроки(); ТЗ.Автор = Конт.Автор; ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Пока Конт.ПолучитьСтроку()=1 Цикл контТовар = Конт.ТМЦ; прихцена=Окр(КонтТовар.Цена_Прих.Получить(Конт.ДатаДок)*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)),2); докцена=Окр(?(Конт.Кво*Конт.Коэффициент=0,0,Конт.СуммаСНДС/(Конт.Кво*Конт.Коэффициент)),2); // ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); Если докцена<прихцена Тогда // ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має ціну нижчу за прихідну "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; //кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Если кат.Выбран()=1 Тогда минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2); Если докцена<минцена Тогда //3/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має надто низьку ціну="+докцена+" мiнимальна="+минцена; ТЗ.Стр = Конт.НомерСтроки; КонецЕсли; КонецЕсли; КонецЦикла; Возврат(ТЗ); КонецФункции Остальные виды "неправильной цены" выбирать таким же образом? |
|||
488
bananan
21.02.13
✎
16:24
|
(486) :) :) :)
|
|||
489
viktor_vv
21.02.13
✎
16:28
|
(486) Ну если цепляться к словам, то в (468) ты про скалярный запрос говорил, а привел варианты совсем другого.
|
|||
490
bananan
21.02.13
✎
16:28
|
(485) попрообывал второй вариант (он мне понятней вроде), да выдает ошибку:
Line 46: Incorrect syntax near '='. а где там 46 строка..... |
|||
491
trad
21.02.13
✎
16:28
|
(488) и ты зря смеешся
|
|||
493
trad
21.02.13
✎
16:31
|
(489) да, я говорил про скалярный, а думал про корреляционный, извини
|
|||
495
bananan
21.02.13
✎
16:33
|
(494) Понял - не лезу.
А как по поводу неправильного синтаксиса = ? |
|||
496
Mikeware
21.02.13
✎
16:33
|
(481) какие два дня? он пять лет уже тут тупит!
:-))) и это еще только начало... |
|||
497
trad
21.02.13
✎
16:34
|
(487)
надо анализировать это Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 и _конструировать_ соответствующий запрос на-лету |
|||
498
Mikeware
21.02.13
✎
16:34
|
(490) после 45-й... где-то перед 47-й...
|
|||
499
Mikeware
21.02.13
✎
16:35
|
(497) не получится.
|
|||
500
bananan
21.02.13
✎
16:35
|
(496) и опять ты со своей желчью...
|
|||
501
viktor_vv
21.02.13
✎
16:35
|
Скорее всего вместо
cast(left(Жур.date_time_iddoc,8) as datetime) надо convert(datetime, left(Жур.date_time_iddoc,8),112) ну и для вторго тоже. Таки cast скорее всего по дефаулту конвертит. |
|||
502
trad
21.02.13
✎
16:39
|
(501) нет, не верно
(490) case when |
|||
503
bananan
21.02.13
✎
16:40
|
(501) каст или конверт - позже разбиремя, где там синтаксическая ошибка использования =?
|SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | FROM _1SJourn as Жур (nolock) | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) |) Данные |WHERE ROUND(case Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |"; |
|||
504
bananan
21.02.13
✎
16:42
|
(502) case when нет в данном тексте запроса..
|
|||
505
trad
21.02.13
✎
16:43
|
(501) на всякий случай. Слова "нет, не верно" относятся к утверждению "надо", а не к последнему предложению
|
|||
506
trad
21.02.13
✎
16:43
|
(504)
вместо WHERE ROUND(case Данные.Количество = 0 напиши WHERE ROUND(case when Данные.Количество = 0 |
|||
507
trad
21.02.13
✎
16:46
|
Хм.
Интересно с чего вдруг кто то утоп ветку с формулировкой: ? [длинная ветка, 21.02.13 - 16:40] С чего вдруг она длинной стала?.. |
|||
508
bananan
21.02.13
✎
16:47
|
(506) Исправил - запрос работает, а как к нему "прикрутить" остальные "неправильные" цены и чтобы выдавать ошибку типа:
" має ціну нижчу за прихідну не встановлена ціна категорії " " має надто низьку ціну="+докцена+" мiнимальна="+минцена; ? |
|||
509
viktor_vv
21.02.13
✎
16:55
|
(505) Я так и понял, таки да, по барабану как конвертить.
|
|||
510
trad
21.02.13
✎
16:56
|
(508) давай так.
Алгоритм конструирования запроса согласно (487) будет стоить 22890 российских рублей. |
|||
511
bananan
21.02.13
✎
17:00
|
(510) Это сколько в долларах?
|
|||
512
trad
21.02.13
✎
17:02
|
761,724 по курсу ЦБ РФ на 21.02.2013
|
|||
513
bananan
21.02.13
✎
17:04
|
(512) У меня зарплата чуть больше 300...
а теперь прикинь солдат где Москва, а где Багдад А за неоценимую помоь с запросом Огромное спасибо |
|||
514
bananan
21.02.13
✎
17:11
|
чтобы выдавать текст ошибки задал в запросе так:
|SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, 'Абба' as Ошибка Дак он Столбца Ошибка не показывает что я не так сделал? |
|||
515
Mikeware
21.02.13
✎
17:24
|
врешь ты где-то
|
|||
516
bananan
21.02.13
✎
17:29
|
(515) Не вру, что-то я в прошлый раз просмотрел...
сейчас задал так как и будет в итоге: |, 'має ціну нижчу за прихідну' as Ошибка В таблице значений появился столбец Ошибка |
|||
517
bananan
21.02.13
✎
17:34
|
В итоге как я думаю сделать (так я смогу):
все три типа "ошибки" - отдельные запросы - в таблицу значений сбрасываем итог работы значений, потом из трех таблиц значений вывожу результаты в Таблицу |
|||
518
batman69
21.02.13
✎
17:37
|
(517) Это что за уродство на Дельфях? Ты бы перестал писать, пользы больше. Тебе кто-нибудь рассказывал про дружественные интерфейсы?
|
|||
519
batman69
21.02.13
✎
17:39
|
(518) + И не говори что так заказчик пожелал.. не поверю. )))
|
|||
520
bananan
21.02.13
✎
17:42
|
Оказывается осталось не так иуж и мало (как я на радостях подумал)
ТЬеперь надо "зазапросить": минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; :( |
|||
521
bananan
21.02.13
✎
17:43
|
(518) Ты о какой имено проге? их там три...
|
|||
522
Mikeware
21.02.13
✎
17:43
|
(518) ты рискнул запустить?
наадеюсь, где-нибудь в песочнице на виртуалке? :-) |
|||
523
bananan
21.02.13
✎
17:45
|
(522) Не переживай за СЕБЯ ВЕЛИКОГО и ни за кого - вирусов там НЕТ и не было
|
|||
524
Mikeware
21.02.13
✎
17:46
|
(523) ты вполне мог об этом и не знать.... :-)
|
|||
525
bananan
21.02.13
✎
17:57
|
(524) Вполне, но антивирус в системе стоит довольно таки неплохой, а программы я писал без вирусов :)
|
|||
526
Classic
21.02.13
✎
18:01
|
Как можно один запрос одбсуждать 6 страниц?
|
|||
527
Mikeware
21.02.13
✎
18:04
|
(526)"все еще только начинается!"© :-))
только половину написали... или треть... |
|||
528
trad
21.02.13
✎
18:30
|
(526) так запрос то обсуждали не много. В основном один - откровенно тормозит и отказывается учится, а другие топчутся на нем и вытирают ноги, потешая свое чсв
|
|||
529
bananan
21.02.13
✎
18:37
|
(527) Скорее на треть
|
|||
530
Classic
21.02.13
✎
18:41
|
(529)
Твоя задача пишется на чистой православной семерке за полчаса максимум и отрабатывает раза в четыре быстрее первоначального алгоритма. Ты пишешь его уже 6 дней. При этом полез в недоступные тебе дебри. Тебе за это платят? Или ты так, для себя? Если платят, то скажи, где можно получать так деньги |
|||
531
batman69
21.02.13
✎
18:51
|
(522) ну естественно )))
(521) Две из них и прогами назвать нельзя, вобщем это пиз-ц товарищи! |
|||
532
batman69
21.02.13
✎
18:51
|
Честное слово ТС, брось писать.
|
|||
533
batman69
21.02.13
✎
18:53
|
Жаль ушел автор.
|
|||
534
bananan
21.02.13
✎
18:54
|
(528) что торможу - неспорю, по поводу "отказывается учится" - ты не прав
|
|||
535
bananan
21.02.13
✎
18:54
|
(533) а ты еще не всю желч вылил?
|
|||
536
batman69
21.02.13
✎
18:55
|
(535) О, появился ))
|
|||
537
batman69
21.02.13
✎
18:55
|
что есть "желч"?
|
|||
538
bananan
21.02.13
✎
18:57
|
(537) Пардон, это я ошибочно тебе адресовал...
|
|||
539
bananan
21.02.13
✎
19:21
|
А по поводу запроса:
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); чтобы это значило? Получаем цену ТМЦ из документа... а зачем : Число(Прав(кат.Идентификатор(),1)? |
|||
540
bananan
21.02.13
✎
19:34
|
Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))) это мы значение цены по виду расчета получаем?
|
|||
541
bananan
21.02.13
✎
19:40
|
+(540) Ошибся здесь Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))) мы получаем цену ТМЦ в данном документе...
|
|||
542
bananan
21.02.13
✎
19:41
|
+(541) точнее получаем ЦенаБезНДС
|
|||
543
bananan
21.02.13
✎
19:46
|
Пытаюсь получить цену без НДС
написал так: | , isnull(ДокС.ЦенаБезНДС, $ДокН.СуммаСНДС) as ЦенаБезНДС выдает ошибку: SQL Server]Invalid column name 'ЦенаБезНДС'. |
|||
544
bananan
21.02.13
✎
19:48
|
+(543) написал так (предварительное ошибочно):
| , isnull(ДокС.ЦенаБезНДС, $ДокН.ЦенаБезНДС) as ЦенаБезНДС |
|||
545
bananan
21.02.13
✎
19:50
|
Почему ЦенаБезНДС ошибочный столбец?
если в доументах РасходнаяНакладная и РасходнаяНакладнаяН есть в таблицной части поле ЦенаБезНДС |
|||
546
bananan
21.02.13
✎
19:52
|
+(545) видимо потому что ЦенаБезНДС находится в табличной части документа?
|
|||
547
Mikeware
21.02.13
✎
20:16
|
(546) потому, что где-то в ДНК записано ошибочное значение...
|
|||
548
sapphire
21.02.13
✎
20:23
|
(481) Аннушка, а шнурков отпускать надоть а то рып в водоемах совсем не останется...
|
|||
549
viktor_vv
21.02.13
✎
20:25
|
(544) Это уже проходлили
isnull(ДокС.ЦенаБезНДС, $ДокН.СуммаСНДС) $ДокН.ЦенаБезНДС ДокС.ЦенаБезНДС слева направо, ничего не натораживает ? |
|||
550
trad
22.02.13
✎
09:01
|
(548) на (486) ответишь?
|
|||
551
sapphire
22.02.13
✎
10:04
|
(526) Еще как можно :)
|
|||
552
sapphire
22.02.13
✎
10:04
|
(550) Да гумно твой запрос, успокойся уже.
|
|||
553
trad
22.02.13
✎
11:12
|
||||
554
bananan
22.02.13
✎
11:22
|
Доброе утро!!!
Вопрос Данные.IdDocDef as Документ_вид Данные.IdDocDef - имеет какой тип данных? |
|||
555
viktor_vv
22.02.13
✎
11:26
|
(554) В скуле число, в DBF строка (шестнадцатиричное представление того же числа, если мне память не изменяет).
Правда Данные - это что ? 1Sjourn наверное. |
|||
556
bananan
22.02.13
✎
11:28
|
(555) То что число вижу в результирующей ТЗ, просто хотелесь бы видеть не какое-то число а: Расходная накладная и т.п....
Т.е. приведение типов здесь не прокатит? |
|||
557
viktor_vv
22.02.13
✎
11:29
|
Данные.IdDocDef as [Документ_вид $ВидДокумента]
|
|||
558
trad
22.02.13
✎
11:29
|
(555)"шестнадцатиричное представление" - 36-рично
"Правда Данные - это что ?" см. (483) |
|||
559
bananan
22.02.13
✎
11:32
|
(557) Спасибо! Не думал, что так просто
|
|||
560
Mikeware
22.02.13
✎
11:33
|
(554) в документации, ссылке на которую дана тебе в январе, это сказано.
|
|||
561
Mikeware
22.02.13
✎
11:34
|
(559) ты вообще не думал. а сразу на форум полез клянчить.
|
|||
562
Mikeware
22.02.13
✎
11:34
|
+(560) ссылка дана не в январе, ав декабре. 2 месяца назад
|
|||
563
trad
22.02.13
✎
11:35
|
(556) на Документ_вид в выборке можешь не обращать внимания.
Это поле необходимо для правильной типизации документа когда 1с++ преобразует результат сервера в то что ты получаешь в ТЗ читать тут http://www.1cpp.ru/docum/icpp/html/ODBC.html#id28 Но если вместо числового идентификатора вида хочешь видеть название вида, то либо (557), либо Данные.IdDocDef as [Документ_вид $ВидДокументаПредставление] и снова http://www.1cpp.ru/docum/icpp/html/ODBC.html#id28 |
|||
564
bananan
22.02.13
✎
11:36
|
Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1)))
роазве не аналогично $ДокС.ЦенаБезНДС? |
|||
565
viktor_vv
22.02.13
✎
11:36
|
(558) Согласен.
|
|||
566
bananan
22.02.13
✎
11:37
|
(561) Ты прям супермозг видиш у себя что я думаю и что я делаю
|
|||
567
Mikeware
22.02.13
✎
11:38
|
(563) оно не читает документацию. принципиально.
|
|||
568
viktor_vv
22.02.13
✎
11:38
|
(564) Нет.
"Цена"+Число(Прав(кат.Идентификатор(),1)) Может быть в конечном итоге чем угодно, в зависимости от Число(Прав(кат.Идентификатор(),1)) |
|||
569
bananan
22.02.13
✎
11:39
|
(567) см. (566) и телепортируйся к моему месту работы и посмотри что я читаю или что я не читаю
|
|||
570
viktor_vv
22.02.13
✎
11:39
|
(568) ЦенаСДС это реквизит табличной части, а это вообще-то реквизит элемента справочника.
|
|||
571
Privalov
22.02.13
✎
11:40
|
Где обещанные исходники проги на дельфях!!! Обещал, давай!!! Народ в нетерпении!!
|
|||
572
Mikeware
22.02.13
✎
11:40
|
(568) только вряд ли Число("БезНДС") будет равно "БезНДС"
|
|||
573
Mikeware
22.02.13
✎
11:40
|
(569) и так ясно, без телепортации...
|
|||
574
bananan
22.02.13
✎
11:41
|
(568) Абидна, но, сейчас я в непрямом запросе это и проверю, мне почему-то кажется что с такими документами - это и будет цена без НДС.
Хотя, конечно же, я могу и ошибаться |
|||
575
bananan
22.02.13
✎
11:42
|
(571) Я обещал? Что-то не помню.. Но раз обещал, в понедельник покажу - постараюсь не забыть
|
|||
576
viktor_vv
22.02.13
✎
11:46
|
(572) Да там видать перепаханная конфа с реквизитами в справочнике ТМЦ типа "Цена1, цена2,Цена3" и каким нибудь пречислением "КатгорииЦен" с соотвествующими идентификаторами с цифрой в конце.
В типовой такой хрени нету. |
|||
577
trad
22.02.13
✎
11:47
|
(567) хотя документация из раздела http://www.1cpp.ru/docum/icpp/html/ODBC.html не подготовленному читателю, без знаний по языку sql и не знакомому со структурой одинесной базы, не поможет вообще никак.
|
|||
578
Wobland
22.02.13
✎
11:48
|
(573) нене, читает. тест на номер страницы из Ицика пройден ;)
|
|||
579
viktor_vv
22.02.13
✎
11:48
|
(576) Там же "Цена"+Число(Прав(кат.Идентификатор(),1)) только последний символ к числу приводят, потом к строке цепляют.
Короче там что-то ядерное такое. |
|||
580
bananan
22.02.13
✎
11:49
|
(576) По словам начальника отдела эта конфа переделана роцентов на 70%...
Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))) как реализовать в запросе? |
|||
581
sapphire
22.02.13
✎
11:49
|
(577) Капитан очевидность :)
|
|||
582
sapphire
22.02.13
✎
11:50
|
(576) Тут кого-то md-шником осчастливили даже :)
|
|||
583
bananan
22.02.13
✎
11:50
|
(579) Вообще-то это код из функции глобального модуля, но, судя по всему скорее всего и этот код не из типовой конфигурации
|
|||
584
viktor_vv
22.02.13
✎
11:50
|
(580) Ого, у вас там что, целый завод по перерабокте цифр :).
|
|||
585
sapphire
22.02.13
✎
12:02
|
(583) Чарівненько
|
|||
586
trad
22.02.13
✎
12:02
|
(581) а полезное есть что сказать?
|
|||
587
sapphire
22.02.13
✎
12:03
|
(586) Не, одно и тоже твердить из темы в тему бесполезно.
|
|||
588
sapphire
22.02.13
✎
12:04
|
(586) А ты думаешь откуда тут Ицика Бен-Гана поминают? Его который раз просят что б он документацию осилил... Так ведь нет же.
|
|||
589
trad
22.02.13
✎
12:05
|
(587) сказать полезное мне, а не ТС.
ты же мне это сказал |
|||
590
sapphire
22.02.13
✎
12:07
|
(589) А что тебе полезно, милейший? Могу тебе сказать, посмотри план выполнения запроса в (319) и продумай. Что-то еще тебе от меня нужно?
|
|||
591
Ёпрст
22.02.13
✎
12:08
|
(582) у меня был, я его проипал.
Кстати, там до уатора норм разраб был - были и классы и прямые запросы в модуле проведения для получения останков. |
|||
592
sapphire
22.02.13
✎
12:11
|
(591) :)
Видать, не выдержал он такого поддавана, али сбёг, а ли спилси... |
|||
593
sapphire
22.02.13
✎
12:11
|
(591) У них там многокассовая розница? Зачем блокирующий расчет в модуле проведения?
|
|||
594
bananan
22.02.13
✎
12:14
|
Ну.. Вам как всегда виднее... А он не сбег и не спился а работает здесь же...
Так вот у меня сейчас задача найти минимальную цену, в функции она вычисляется так: минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); вот это и надо в запросе реализовать... |
|||
595
sapphire
22.02.13
✎
12:17
|
(589) Ты бы ему лучше свои творения показал:
http://www.dev.citykirov.ru/ |
|||
596
sapphire
22.02.13
✎
12:18
|
(594) А с чего ты взял, что Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))) это значение минимальной цены?
|
|||
597
bananan
22.02.13
✎
12:19
|
Странно в непрямом запросе в функции написал такой код:
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Сообщить(Конт.ТМЦ+ ", минцена= "+минцена); Так он сообщает Только название ТМЦ, даже нету! Что здесь нетак? |
|||
598
bananan
22.02.13
✎
12:20
|
(596) А что это потвоему?
|
|||
599
sapphire
22.02.13
✎
12:20
|
(597) А так?
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Сообщить(""+Конт.ТМЦ+ ", минцена= "+минцена); |
|||
600
Wobland
22.02.13
✎
12:20
|
(597) Так он сообщает Только название ТМЦ, даже нету!
это по-русски или по-уркаински? |
|||
601
sapphire
22.02.13
✎
12:22
|
(598) Получение атрибута вида 'Цена[0123456789]'
|
|||
602
sapphire
22.02.13
✎
12:23
|
(600) это по его-вски
|
|||
603
sapphire
22.02.13
✎
12:24
|
(594) Не сбег и не спился, только от тебя бегает, да?
|
|||
604
bananan
22.02.13
✎
12:24
|
(600) Пардон. пропустил:
", минцена= " - этой строки в сообщении даже нет! |
|||
605
sapphire
22.02.13
✎
12:24
|
(598) Паче того, он небось еще и периодический
|
|||
606
bananan
22.02.13
✎
12:25
|
(603) Да нет - не бегает, каждый деь на работе, просто уже третий день на больничном он
|
|||
607
bananan
22.02.13
✎
12:26
|
Ну вот код:
Сообщить(Конт.ТМЦ+ ", минцена= "+минцена); который возможно и позволить понять, что такое минцена, но этот код выдает только Конт.ТМЦ, и все! даже ", минцена= " не выдает Почему? |
|||
608
sapphire
22.02.13
✎
12:28
|
(589) Вот посмотри (599) и (607), думаешь кто-то будет к ТС относится сурьезно?
|
|||
609
sapphire
22.02.13
✎
12:28
|
(607) Въ Козельскъ, зв?ре!!
|
|||
610
sapphire
22.02.13
✎
12:29
|
(607) ну ти смалиш и шкрябай далі
|
|||
611
Ёпрст
22.02.13
✎
12:29
|
(607)Неявное приведение к типу первого операнда.
|
|||
612
sapphire
22.02.13
✎
12:29
|
(607) Сообщить(""+Конт.ТМЦ+ ", минцена= "+минцена);
|
|||
613
Ёпрст
22.02.13
✎
12:29
|
+611 если че, Сообщить(""+Конт.ТМЦ+ ", минцена= "+минцена);
|
|||
614
sapphire
22.02.13
✎
12:30
|
(613) :))))
|
|||
615
sapphire
22.02.13
✎
12:31
|
(611) Я ему исчо в (599) на это намекал - ему безразлично...
|
|||
616
bananan
22.02.13
✎
12:32
|
(607) Спасибо!
Не перестаю удивляться тому как работает язык программирования 1С Сообщить(""+Конт.ТМЦ+ ", минцена= "+минцена); - работает, а Сообщить(Конт.ТМЦ+ ", минцена= "+минцена); - работет неправильно... Короче выдает , минцена= НеизвестныйОбъект ТАк что же такое эта чертова минцена? |
|||
617
Ёпрст
22.02.13
✎
12:33
|
(616) нормально он работает.
Неявное приведение типов есть и в других языках или нужно явное приведение к строке с помощью функции преобразования. |
|||
618
sapphire
22.02.13
✎
12:35
|
(617) Сам себя благодарит :)
Что дальше-то будет, о, ужас... |
|||
619
bananan
22.02.13
✎
12:37
|
(618) Да после ваших комплиментов,..
Ошибся я с блаоджарностью, а спасибо было адресовано тебе |
|||
620
sapphire
22.02.13
✎
12:39
|
(619) Ну так что же там с "минцена"?
Таки что это? |
|||
621
Mikeware
22.02.13
✎
12:42
|
(578) это был тест не на "чтение ицика", а на его наличие.
|
|||
622
bananan
22.02.13
✎
12:47
|
(620) Судя по идентификатору - это минимальная цена..
НУ сейчас будем думать что код: Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); делает.. |
|||
623
bananan
22.02.13
✎
12:48
|
из Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1)));
надо посмотреть что такое кат.Идентификатор(), остальное вроде все понятно... |
|||
624
sapphire
22.02.13
✎
12:49
|
(622) Мне, например, и так ясно, я тебе уже отвечал.
|
|||
625
bananan
22.02.13
✎
12:49
|
ага, нешел кат.Идентификатор() - это категория цены
|
|||
626
sapphire
22.02.13
✎
12:49
|
(623) В конфигураторе посмотри....
Цена[0123456789] наверняка периодическая... |
|||
627
bananan
22.02.13
✎
12:50
|
(624) Может я пропустил? Что тебе ясно в этом коде?
|
|||
628
sapphire
22.02.13
✎
12:51
|
(625) Опять же, к вопросу о дожде,
Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(""+кат.Идентификатор(),1))); |
|||
629
sapphire
22.02.13
✎
12:52
|
(627) Ты читать не умеешь совсем или тихо сам с собою левою рукою?
|
|||
630
bananan
22.02.13
✎
12:54
|
(629) что-то "ветка" глючит... Сейчас вот сообщения 623, 624, 629, а где 625 и далее?
Читать я умею, извини, может я пропустил где ты писал что это такое? |
|||
631
bananan
22.02.13
✎
12:57
|
Глюки продолжаются... Извините, но создам новую ветку по теме этого запроса
|
|||
632
viktor_vv
22.02.13
✎
12:59
|
(630) да не глюки это, внизу нажми последнюю страницу.
|
|||
633
bananan
22.02.13
✎
13:16
|
Mikeware сказал что эта ветка еще жива...
Попробуем еще здесь побеседовать.. Так вот код непрямого запроса: Если кат.Выбран()=1 Тогда минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Сообщить(""+Конт.ТМЦ+ ", минцена= "+минцена); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; нужно "выпрымить" - засунуть в прямой запрос... |
|||
634
bananan
22.02.13
✎
13:18
|
+(633) т.е. в первуюд очередь - надо выбрать минцена
|
|||
635
bananan
22.02.13
✎
13:33
|
+(634) Потом определить
Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 если минцена периодический: тогда минцена=минцена.Получить(Конт.ДатаДок); потом минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); хотя здесь я не вижу особой разности переодический ли минцена.. ну и если минцена=0 тогда это то ято мне и нужно - это ошибка " не встановлена ціна категорії ".... Так вот, как в прямом запросе выбрать: Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); ?? |
|||
636
bananan
22.02.13
✎
13:37
|
Хорошо. есть кто живой?
Как в прямом запросе определить: Конт.Доставка.КаналСбытаТТ.КатегорияЦены? |
|||
637
bananan
22.02.13
✎
13:40
|
+(636) насколько я помню в прямом запросе "многоточие" не проходит...
Значит надо выбрать $Док.Доставка as Доставка потом Доставка.КаналсбытаТТ as Канал потом Канал.КатегорияЦены так ? |
|||
638
chelentano
22.02.13
✎
13:41
|
(636) переходи на 8.2, там это реализовано
|
|||
639
Mikeware
22.02.13
✎
13:41
|
(636) приджойнить к документу Доставку
к Доставке приджойнить КаналСбытаТТ уж из КаналСбытаТТ получать КатегориюЦены |
|||
640
sapphire
22.02.13
✎
13:42
|
(636) Нужно знать типы полей:
Доставка Доставка.КаналСбытаТТ - здесь смотреть еще периодический или нет. КаналСбытаТТ.КатегорияЦены - та же фигня |
|||
641
Mikeware
22.02.13
✎
13:42
|
(637) примерно
|
|||
642
bananan
22.02.13
✎
13:48
|
(640) Доставка - Справочник.Доставка
КаналСбытаТТ - Справочник.КаналыСбыта Категория цены - Перечисление.ТипыЦен |
|||
643
bananan
22.02.13
✎
13:54
|
+(642) выходит кажется так:
isnull($ДокС.Доставка, $ДокН.Доставка) as [Доставка Справочник.Доставка] Так? Дальше как? |
|||
644
bananan
22.02.13
✎
14:08
|
Кто-нибудь, помогите!
|
|||
645
Mikeware
22.02.13
✎
14:09
|
(644) см (639)
|
|||
646
bananan
22.02.13
✎
14:12
|
Ребята, серьйозно, помогите..
Задал так в тексте запроса: | , isnull($ДокС.Доставка, $ДокН.Доставка) as [Доставка Справочник.Доставка] Дак ругается: поле таблицы не найдено "$ДокС.Доставка" но в документе РасходнаяНакладная есть поле Доставка что нетак? |
|||
647
bananan
22.02.13
✎
14:14
|
(645) придожойнить? Дак джойны есть или это нете дойны?
| Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) Еще надо добавить джойнов? |
|||
648
sapphire
22.02.13
✎
14:15
|
(646) Потому что поле Доставка относится к реквизитам документа, а не к табличной части.
|
|||
649
sapphire
22.02.13
✎
14:16
|
(647) Лично я левые соединения обсуждать вообще не буду.
Пусть, Дима, как автор идеи левого соединения к журналу сам отбрехивается. |
|||
650
sapphire
22.02.13
✎
14:16
|
(647) Я тебе уже говорил сделай хотя бы для одного типа документов, потом хватайся за другой тип.
|
|||
651
bananan
22.02.13
✎
14:19
|
(650) Ну есть же сделанный запрос для обоих типов документов.
В чем резон делать для одного типа? |
|||
652
bananan
22.02.13
✎
14:31
|
+(651) Здесь есть кто-нибудь?
так что надо еще делать один джойн... типа | left join $Справочник.Доставка Доставка (nolock) on ... ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) а вот с on - незнаю как по Оставка его выбирать... |
|||
653
sapphire
22.02.13
✎
14:40
|
(651) В том, что бы понять КАК делать.
|
|||
654
sapphire
22.02.13
✎
14:41
|
(652) Гадаешь? Ты вот в Delphi тоже гаданием на API занимаешься?
|
|||
655
bananan
22.02.13
✎
14:43
|
(654) ничего я не гадаю, просто опыт работы с SQL у меня практически нулевой (не учитывая простейших селектов)
|
|||
656
bananan
22.02.13
✎
15:02
|
(653) понять как делать заведомо неправильно? ЛУчше уж разобраться в правильном запросе, чем в ну в не практичном...
|
|||
657
Mikeware
22.02.13
✎
15:23
|
(655) теоретически у тебя опыт работы с SQL/1с++/Прямыми запросами - c 24.12.2012 - фактически два месяца!
(656) "чтобы узнать вкус пудинга - надо него съесть" бери 1сQA, и в нем пиши - пробуй-отлаживай-проверяй запросы.. |
|||
658
sapphire
22.02.13
✎
15:23
|
(656) Да?
Ты уже настолько в курсе что правильно, практично, а что нет? Ну так и разбирайся сам. |
|||
659
Mikeware
22.02.13
✎
15:37
|
(658)
"-лёлик, это же неэстетично! -- зато дешево, далежно и практично!" © |
|||
660
bananan
22.02.13
✎
15:37
|
(657) А что такое 1сQA?
|
|||
661
Mikeware
22.02.13
✎
15:44
|
||||
662
sapphire
22.02.13
✎
15:46
|
||||
663
bananan
22.02.13
✎
16:05
|
(662) Скачал 1сQA. Запустил... Выдает:
Неудачная попытка создания объекта (СервисРасшФормы) Чего здусь уж нетак? |
|||
664
sapphire
22.02.13
✎
16:18
|
из пятничной ветки, но актуально:
Мало открыть человеку глаза. Большинство еще просит указать дорогу и ждет волшебного пенделя. |
|||
665
bananan
22.02.13
✎
16:23
|
(664) Несовсем так, ошибка Неудачная попытка создания объекта (СервисРасшФормы) откуда взялась?
|
|||
666
Mikeware
22.02.13
✎
16:27
|
(663) расчитано было на старую версию 1c++
замени как тут: //*MS@ТКП, 2008-07-03 15:37:21 // гРасшФорма=СоздатьОбъект("СервисРасшФормы"); // гРасшФорма.ЗагрузитьМодуль(); // -------- заменено на: ///MS@ТКП, 2008-07-03 15:37:21 Если глВерсия1СПП >= глВерсия1СПП_2_5_0_0 Тогда //оФорма = СоздатьОбъект("Форма"); //оФорма.УстановитьФорму(Форма); //оФорма.СоздатьЭлементУправления(Сам, ИдентификаторРеквизита); гРасшФорма=СоздатьОбъект("Сервис"); гРФорма=СоздатьОбъект("Общие.Форма.Привязка"); гРФорма.УстановитьФорму(Форма); Иначе //*MS@ТКП, 2008-07-03 15:22:25 // гРасшФорма=СоздатьОбъект("СервисРасшФормы"); // -------- заменено на: гРасшФорма=СоздатьОбъект("Сервис"); ///MS@ТКП, 2008-07-03 15:22:25 гРасшФорма.ЗагрузитьМодуль(); гРФорма=СоздатьОбъект("Общие.Форма.Привязка"); гРФорма.УстановитьФорму(Форма); оАтрФормы.УстановитьАтрибут(КонтекстФормы.Форма, ИдентификаторРеквизита); КонецЕсли; |
|||
667
bananan
22.02.13
✎
16:35
|
Спасибо, сейчас попробую...
|
|||
668
bananan
22.02.13
✎
16:37
|
Этот код я вставил в начало процедуры ПриОткрытии()
ТЕперь выдает две ошибки. Может код надо втавить в другое место? |
|||
669
sapphire
22.02.13
✎
16:41
|
(666) А отсюда не проще взять было?
http://infostart.ru/public/98982/ |
|||
670
bananan
22.02.13
✎
16:52
|
(669) А нету у меня 800 рублей чтобы скачать :(
|
|||
671
sapphire
22.02.13
✎
16:58
|
(670) Ну гугл тебе в помощь
|
|||
672
bananan
22.02.13
✎
16:59
|
(671) да гуглю уже не один час..
|
|||
673
viktor_vv
22.02.13
✎
17:03
|
(666) Ну и нафига ты про этот 1СQA сказал ?
Теперь двести постов его подключать :). Хотя я и сам так и не осилил :). Полурабочий какой-то получился. |
|||
674
viktor_vv
22.02.13
✎
17:04
|
(672) Бедный гугль, боюсь его серваки не выдержат.
|
|||
675
sapphire
22.02.13
✎
17:04
|
(673) :)))))))
Я такое писал лет эдак 9 назад :) |
|||
676
Mikeware
22.02.13
✎
17:05
|
(669) хренассе его там наворотили....
у меня по сравнению с инфосраньевским - какой-то жалкий огрызок. :-) |
|||
677
viktor_vv
22.02.13
✎
17:07
|
(675) Я не про написать, я его и подключить не осилил :).
|
|||
678
bananan
22.02.13
✎
17:12
|
Кто-нибудь подскажет, что делать с 1СQA??
|
|||
679
Mikeware
22.02.13
✎
17:13
|
(678) запустить
|
|||
680
sapphire
22.02.13
✎
17:22
|
(676) (677) ИМХО, баловство это :)
|
|||
681
sapphire
22.02.13
✎
17:23
|
Выкачать даже с ИС не проблема, другое дело, что ТС не разберется с ним.
|
|||
682
sapphire
22.02.13
✎
17:24
|
(672) Вместо того, что бы вкуривать 1СQA, лучше бы посмотрел как у тебя данные лежат.
|
|||
683
bananan
22.02.13
✎
17:26
|
(682) Какиме именно данные, о типах я тебе писал, что теперь интересует?
|
|||
684
sapphire
22.02.13
✎
17:26
|
(656) Кстати, какой из запросов там у тебю правильный?
|
|||
685
sapphire
22.02.13
✎
17:27
|
(683) Меня? Меня мало что интересует :))))
|
|||
686
Mikeware
22.02.13
✎
17:28
|
(680) да самой первой версии в принципе более чем достаточно...
(682) да куле там вкуривать. дал ему, млять, что на что заменить - он йоптыть даже млять замену как-то куево сделал. и, млять "две ошибки" - ну мистец, телепатировать теперть чо за две ошибки... хотя, млять, место одной точно знаю - ДНК.... |
|||
687
sapphire
22.02.13
✎
17:28
|
(683) Знать типы - это знать где физически хранятся данные.
|
|||
688
bananan
22.02.13
✎
17:29
|
(684) вот рабочий запрос:
|SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, 'має ціну нижчу за прихідну' as Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | FROM _1SJourn as Жур (nolock) | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) |) Данные |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |"; ну и его надо переделать еще два раза под другие ошибки... |
|||
689
sapphire
22.02.13
✎
17:30
|
(686) Да, Мишь он упрям, аки овен и туп, как стекло.
Бесполезно ему объяснять почему надо сделать сначала для одного типа документа, а не хвататься сделать всё сразу... |
|||
690
Mikeware
22.02.13
✎
17:30
|
(685)
- и вотка покуй? -- покуй! - и бабы покуй? -- покуй!! - и деньги покуй?? -- а вот дентги не покуй! - а в проавилах записано.... -- а мне правила покуй! © |
|||
691
sapphire
22.02.13
✎
17:32
|
(688) Ну и? От нас-то что нужно?
|
|||
692
viktor_vv
22.02.13
✎
17:35
|
(686) :)).
Прям крик души, а млять - это ты что-то про фиалки на лугу и единорогов наверное хотел сказать :)). |
|||
693
Mikeware
22.02.13
✎
17:36
|
(692)
"-кто пасется на лугу? -- заготовка для рагу!" © |
|||
694
Mikeware
22.02.13
✎
17:38
|
(691) ты тупой? тебе ж русским-по-беому сказали: " его надо переделать еще два раза под другие ошибки..." :-)
забили только волшебное слово добавить: "бегомблять!"® |
|||
695
bananan
22.02.13
✎
17:45
|
(686) Не нервничай...так вот в том коде что я закачал строки
гРасшФорма=СоздатьОбъект("СервисРасшФормы"); нет и как я ее должен был заменить?? |
|||
696
bananan
22.02.13
✎
17:47
|
(694) ладно цеплтьсяк словам..
ну не переделать, а на основе того запроса создать запрос на два других типа ошибок в цене... |
|||
697
bananan
22.02.13
✎
17:50
|
+(695) Ошибки:
Если глВерсия1СПП <<?>>>= глВерсия1СПП_2_5_0_0 Тогда {\\SERVER12\VPKTEST$\EXTFORMS\1CQA.ERT(196)}: Переменная не определена (глВерсия1СПП) оАтрФормы<<?>>.УстановитьАтрибут(КонтекстФормы.Форма, ИдентификаторРеквизита); {\\SERVER12\VPKTEST$\EXTFORMS\1CQA.ERT(221)}: Переменная не определена (оАтрФормы) |
|||
698
Mikeware
22.02.13
✎
17:51
|
(695) как заменить - указано в (666)
(697) ну, плять, поредели переменные. или убери вообще эти сравнения. |
|||
699
bananan
22.02.13
✎
17:53
|
(698) в коде того что я закачал нет строки
гРасшФорма=СоздатьОбъект("СервисРасшФормы"); которую надо заменить. И как я ее должен біл заменять и чем? |
|||
700
bananan
22.02.13
✎
17:58
|
(698) когда убрал Если...
вспліла ошибка: оАтрФормы - переменная неопределена |
|||
701
Mikeware
22.02.13
✎
17:59
|
Где у тебя тогда создавался этот объект?
|
|||
702
Попытка1С
22.02.13
✎
18:09
|
(693) У тебя голова от анекдотов не пухнет?)
|
|||
703
Mikeware
22.02.13
✎
18:20
|
(702) Нет. а что, должна?
она не пухнет даже когда я в нее ем... |
|||
704
Попытка1С
22.02.13
✎
18:45
|
(703) Большая у тебя голова.. много помещается..)
|
|||
705
Wobland
25.02.13
✎
08:43
|
Блондинка по телефону:
- Я не спрашиваю твоих советов, ты мне скажи, что делать нужно! |
|||
706
Wobland
25.02.13
✎
08:43
|
кстати, понедельник. обещанный делфийный код будет?
|
|||
707
Privalov
25.02.13
✎
08:47
|
(706) Присоединяюсь!!!!!
|
|||
708
Privalov
25.02.13
✎
09:31
|
Все замерли в ожидании )))
|
|||
709
Mikeware
25.02.13
✎
09:37
|
(708) или в страхе?
|
|||
710
Wobland
25.02.13
✎
09:41
|
солнце ещё низко над украиной
|
|||
711
Mikeware
25.02.13
✎
09:44
|
(710) "Тиха укрАинская ночь. Но сало лучше перепрятать!"©
|
|||
712
Privalov
25.02.13
✎
09:44
|
(710) Ну, да и поди еще ТС писАл всю ночь.
|
|||
713
Privalov
25.02.13
✎
10:25
|
Никого ))
|
|||
714
Privalov
25.02.13
✎
11:35
|
Не будет исходников .
|
|||
715
Mikeware
25.02.13
✎
11:41
|
(714) Сходи в кино, на http://www.kinonews.ru/movie_96810/leatherface-3d
почти то же самое... |
|||
716
Privalov
25.02.13
✎
11:42
|
(715) )))))
|
|||
717
Wobland
25.02.13
✎
11:43
|
а послезавтра придёт ТС и скажет: "где это я исходники обещал?"
|
|||
718
In123
25.02.13
✎
11:46
|
(717) +100500
|
|||
719
Privalov
26.02.13
✎
12:00
|
И?
|
|||
720
Privalov
26.02.13
✎
12:00
|
Где?
|
|||
721
bananan
26.02.13
✎
12:02
|
Добрый день! Вижу у нас взаимная симпатия :)
Исходники - вроде не забыл unit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, StdCtrls, IniFiles, Math, Printers; type TForm1 = class(TForm) Timer1: TTimer; ProgressBar1: TProgressBar; Label1: TLabel; Label2: TLabel; ProgressBar2: TProgressBar; Label3: TLabel; ProgressBar3: TProgressBar; Label4: TLabel; ProgressBar4: TProgressBar; Label5: TLabel; ProgressBar5: TProgressBar; Label6: TLabel; ProgressBar6: TProgressBar; Label7: TLabel; ProgressBar7: TProgressBar; Label8: TLabel; ProgressBar8: TProgressBar; Label9: TLabel; ProgressBar9: TProgressBar; Label10: TLabel; ProgressBar10: TProgressBar; Label11: TLabel; ProgressBar11: TProgressBar; Button1: TButton; PrintDialog1: TPrintDialog; Button2: TButton; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } procedure WMGETMINMAXINFO (var Msg:TWMGETMINMAXINFO); message WM_GETMINMAXINFO; public { Public declarations } end; var Form1: TForm1; pBar : Integer = 1; lab : TLabel; sPath: String[60]; sIniFile: TIniFile; result: array [1..88] of boolean; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); var pb : TProgressBar; begin pb := TProgressBar(FindComponent('ProgressBar' + IntToStr(pBar))); if Assigned(pb) then begin pb.Position := pb.Position + 1; if pb.Position >= 100 then inc(pBar); if pBar > 11 then begin Timer1.Enabled := False; Button1.Enabled := true; end; end; end; а жельше там неинтерестная лабуда... |
|||
722
bananan
26.02.13
✎
12:06
|
А по поводу моего запроса, так вот я решил таки взяться и написать запрос по каждому виду документа отдельно (чтобы разобраться) так вот, текст запроса получился такой:
|SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, 'має ціну нижчу за прихідну' as Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , $ДокН.ТМЦ as ТМЦ | , ДокН.lineno_) lineno_ | , $ДокН.Кво * $ДокН.Коэффициент /* у цьоу рядку йому щось неподобається!!! .*/Количество | , $ДокН.СуммаСНДС СуммаСНДС | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | FROM _1SJourn as Жур (nolock) | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = $ДокН.ТМЦ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) |) Данные |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |"; Дак ругается что мол некорректное применение оператора *, когда я убрал * $ДокН.Коэффициент выдает ошибку в использвании from... Что неправильно? |
|||
723
Privalov
26.02.13
✎
12:17
|
(721) Мдя... и что это рассматривать как издевательство? Столько дней ждали, а он кинул одну процедурку и все. Нет так не пойдет. Нет тебе веры.
|
|||
724
bananan
26.02.13
✎
12:18
|
(723) Остальное - чепуха, но, если надо - принесу в следующий раз..
|
|||
725
Ёпрст
26.02.13
✎
12:24
|
ошибка в этой строке
| , ДокН.lineno_) lineno_ ищи |
|||
726
Privalov
26.02.13
✎
12:24
|
(724) Т.е. это самый важный код в трех файлах? Или больше нигде ничего нет? Это ты писал три дня?
|
|||
727
bananan
26.02.13
✎
12:26
|
(726) Я бы не сказал, что самый важный, - самый интерестный, дальше полно чернухи, (на форме 77 чекбоксво, все их надо проверить скинуть-прочитать из ини файла и т.д...
|
|||
728
bananan
26.02.13
✎
12:30
|
(725) Не понял в чем в этой строке ошибка... Когда убираю эту строку выжает такую ошибку:]Line 15: Incorrect syntax near '*'.
|
|||
729
Wobland
26.02.13
✎
12:30
|
а скажите мне как человеку, далёкому от делфей..
на зачем вот это: if pBar > 11 не проще было прогрессбар крутить до (сколько там?) 1200? |
|||
730
Wobland
26.02.13
✎
12:31
|
(728) может, там в строке что-то лишнее?
|
|||
731
viktor_vv
26.02.13
✎
12:33
|
(722) Тут тоже оставь один вид документа, лучше через равно
AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) А то из-за этого у тебя в $ДокН.Кво * $ДокН.Коэффициент Null попадает. |
|||
732
bananan
26.02.13
✎
12:44
|
(730) А что там может быть лишним в строке , ДокН.lineno_) lineno_?
(729) pBar - это объект Прогресбар а не свойсвто позиция, на форме 11 таких объектов.. (731) Сейчас посмотрю |
|||
733
Ёпрст
26.02.13
✎
12:46
|
(732) думай, много думай..
особенно, на 21 символом призадумайся |
|||
734
bananan
26.02.13
✎
12:46
|
(731) Это я не заметил, убрал второй вид документа...
Но вопрос не в этом. Текст запроса такой: |SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, 'має ціну нижчу за прихідну' as Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , $ДокН.ТМЦ as ТМЦ | , ДокН.lineno_) lineno_ | , $ДокН.Кво * $ДокН.Коэффициент /* у цьоу рядку йому щось неподобається!!! .*/Количество | , $ДокН.СуммаСНДС СуммаСНДС | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | FROM _1SJourn as Жур (nolock) | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = $ДокН.ТМЦ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладнаяН) |) Данные |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |"; выдает ощибку: Line 15: Incorrect syntax near '*'. Почему??? |
|||
735
bananan
26.02.13
✎
12:47
|
(733) А что такое 21 сомвол????
|
|||
736
Wobland
26.02.13
✎
12:48
|
(734) а что ты хочешь от * там? каким смыслом существования ты эту звёздочку наделяешь?
|
|||
737
Wobland
26.02.13
✎
12:48
|
(735) это символ точно посередине между 20 и 22
|
|||
738
Ёпрст
26.02.13
✎
12:48
|
(735) в строке
| , ДокН.lineno_) lineno_ найди двадцать первый символ слева. Посмотри и подумай. |
|||
739
Wobland
26.02.13
✎
12:49
|
(738) пробелы считать за один?
|
|||
740
chelentano
26.02.13
✎
12:50
|
(735) это как 25-й кадр
(738) он ведь сейчас насчитает там :) |
|||
741
bananan
26.02.13
✎
12:51
|
(738) посмотрел, подумал символ "_", если его убрать тоже ошибка: Incorrect syntax near the keyword 'lineno'.
|
|||
742
Ёпрст
26.02.13
✎
12:52
|
(741) ты еще и считать не умеешь, тогда в школу.
|
|||
743
bananan
26.02.13
✎
12:52
|
(736) От * хочу - умножение колиичества товара на цену да единицу товара
|
|||
744
bananan
26.02.13
✎
12:53
|
(742) Может в ясли?
Так какая там ошибка?? |
|||
745
Privalov
26.02.13
✎
12:53
|
Да, он просто троллит и издевается, нельзя быть таким тупым.
|
|||
746
Ёпрст
26.02.13
✎
12:53
|
(743) ответ в в (738)
считай символы (все, в том числе и пробелы), о юный падаван! |
|||
747
Wobland
26.02.13
✎
12:54
|
ёмаё, а я ж не поленился посчитать, там не "_"
|
|||
748
Wobland
26.02.13
✎
12:54
|
(745) ты новенький в нашем фан-клубе, он неоднократно опровергал это утверждение
|
|||
749
Mikeware
26.02.13
✎
12:56
|
И вновь продолжается бой...©
:-) |
|||
750
bananan
26.02.13
✎
12:57
|
(745) А тролем таки можно быть?
|
|||
751
viktor_vv
26.02.13
✎
12:57
|
(744) Не поверю, что в этой строке тебе ничего не кажется странным
| , ДокН.lineno_) lineno_ это какой-то адский отжиг. |
|||
752
Ёпрст
26.02.13
✎
12:58
|
(750)
Ладно, учу : открой ТАБЛО в предприятии, напиши туда Сред("| , ДокН.lineno_) lineno_",21,1) и нажми ентер, раз сам считать не научился получишь верный ответ, дальше включай мозг и думай. |
|||
753
Wobland
26.02.13
✎
12:59
|
видать, нашего бананана уволили. теперь следующий падаван его место занял
|
|||
754
Mikeware
26.02.13
✎
13:00
|
(752) 1) "что такое табло?"
2) "как открыть табло?" :-))) |
|||
755
Mikeware
26.02.13
✎
13:01
|
(753) "События имеют тенденцию развиваться от плохого к наихудшему"
|
|||
756
bananan
26.02.13
✎
13:01
|
(751) Спасибо. Исправил и запрос работает...
Это по поводу того чтобы разобраться... Ну и насколько теперь стало легче "обзапросить" минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; ?? С этой лабудой поможет кто разобраться? |
|||
757
Wobland
26.02.13
✎
13:02
|
(755) не, мне старый больше нравился. а у этого не выходит.
"обзапросить", "лабуда" - ну не в духе того, привычного бананана |
|||
758
bananan
26.02.13
✎
13:03
|
(752-754) Да увидел я уже там ошибку - успокойтесь и не трольте...
Если у кого есть нормальная подсказка по (756) - с радостью приму.. |
|||
759
bananan
26.02.13
✎
13:03
|
(757) Дык от вас набираюсь лексикона..
|
|||
760
Ёпрст
26.02.13
✎
13:05
|
(756) и что тебе там не понятно ?
|
|||
761
viktor_vv
26.02.13
✎
13:05
|
Вот так всегда, кто не работает, тот ест (получает спасибо) :)).
|
|||
762
bananan
26.02.13
✎
13:05
|
(755) Каждый воспринимет окружающее - по-своему!
|
|||
763
bananan
26.02.13
✎
13:06
|
(760) Непонятно многое:
1. как в запросе выбрать минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); ? |
|||
764
viktor_vv
26.02.13
✎
13:07
|
(756) Там где-то пару страниц назад тебе trdm, если не ошибаюсь, давал почти готовый код.
|
|||
765
Ёпрст
26.02.13
✎
13:08
|
(763) для начала, там бред написан, зачем его в запрос тащить ?
минцена=минцена.Получить(Конт.ДатаДок); вот это вообще махер - получать что-то у ЧИСЛА. |
|||
766
Ёпрст
26.02.13
✎
13:08
|
И это, какое отношение этот код имеет к запросу ?
|
|||
767
bananan
26.02.13
✎
13:09
|
(765) Не вижу я в коде функции строки:
минцена=минцена.Получить(Конт.ДатаДок) |
|||
768
Wobland
26.02.13
✎
13:11
|
(767) ктрл+ф - поиск
|
|||
769
bananan
26.02.13
✎
13:11
|
(766) Этот код сейчас не имеет никакого отношения к запросу.
Задача запроса: выбрать документы и прочее если в строке документа "неправильная" цена установлена... НЕПравильность цены определяте функция: Функция Разность(Конт) //Перем кат,минцена,докцена; ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Автор"); ТЗ.НоваяКолонка("Товар"); ТЗ.НоваяКолонка("Ошибка"); ТЗ.НоваяКолонка("Стр"); Конт.ВыбратьСтроки(); ТЗ.Автор = Конт.Автор; ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Пока Конт.ПолучитьСтроку()=1 Цикл контТовар = Конт.ТМЦ; прихцена=Окр(КонтТовар.Цена_Прих.Получить(Конт.ДатаДок)*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)),2); докцена=Окр(?(Конт.Кво*Конт.Коэффициент=0,0,Конт.СуммаСНДС/(Конт.Кво*Конт.Коэффициент)),2); Если докцена<прихцена Тогда // ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має ціну нижчу за прихідну "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; //кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Если кат.Выбран()=1 Тогда минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2); Если докцена<минцена Тогда //3/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " має надто низьку ціну="+докцена+" мiнимальна="+минцена; ТЗ.Стр = Конт.НомерСтроки; КонецЕсли; КонецЕсли; КонецЦикла; Возврат(ТЗ); КонецФункции Вот ее и надо в запрос поставить... И еще, я буду делать три запроса (по каждой из "ощшибок), т ак вот на первую "ошибку" запрос уже есть |
|||
770
viktor_vv
26.02.13
✎
13:12
|
(768) Неправильно, надо дать позицию символа в (756), с которого начинается кусок этого кода.
|
|||
771
bananan
26.02.13
✎
13:13
|
(768) в 1С не кнтрл+_ф, а кнтрл-F3...
пропустил я эту строку... так эта строка получает цену на дату.. |
|||
772
Wobland
26.02.13
✎
13:13
|
(771) у числа что-то получает?
|
|||
773
Wobland
26.02.13
✎
13:14
|
(769) не, тот бананан не смог бы сказать "задача:"
|
|||
774
bananan
26.02.13
✎
13:14
|
(772) В этой функции минцина в первую очередь объект, а потом уж число..
|
|||
775
Wobland
26.02.13
✎
13:15
|
(774) точно, подменили
|
|||
776
Privalov
26.02.13
✎
13:15
|
Это ж ТС с 15-го числа с этой задачей мучается, к финалу еще даже близко не подобрался, и его еще не уволили?
Или все таки уволили и кто-то другой подхватил падающее знамя? |
|||
777
Ёпрст
26.02.13
✎
13:15
|
(767) ты ужо не видишь, что сам написал ?!!!!!!!!
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда !!!!!!!!!!!!!!!! минцена=минцена.Получить(Конт.ДатаДок);!!!!!!!!!!!!!!!! КонецЕсли; //Зачем у ЧИСЛА что-то получать? |
|||
778
trad
26.02.13
✎
13:15
|
(764) не trdm тут не было. А так да, нас иногда путают.
|
|||
779
bananan
26.02.13
✎
13:15
|
(773) А Воблдан - тот, по желчи видно...
|
|||
780
Ёпрст
26.02.13
✎
13:16
|
+777
если что, минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Этот код присвоит минцена число, всегда. |
|||
781
viktor_vv
26.02.13
✎
13:16
|
(774) А что за объект в первую очередь?
И этот кусок кода ты добалял ? |
|||
782
bananan
26.02.13
✎
13:16
|
(777) эту функцию я не писал, она мне досталась в наследство от предыдущих программистов
|
|||
783
viktor_vv
26.02.13
✎
13:16
|
(778) Сорри, попутал :)).
|
|||
784
Ёпрст
26.02.13
✎
13:17
|
(774) Ты это, почитай СП на ночь.
ПолучитьАтрибут, есть такой метод у документа - получает ЗНАЧЕНИЕ |
|||
785
viktor_vv
26.02.13
✎
13:18
|
(780) зря ты md прощелкал, судя по (782) там просто шедевральная конфа.
|
|||
786
Ёпрст
26.02.13
✎
13:18
|
(782) дык исправляй.
|
|||
787
trad
26.02.13
✎
13:19
|
(780) не, не всегда
|
|||
788
Privalov
26.02.13
✎
13:22
|
(785) Там и на дельфях не слабее шедевр походу ))))))
|
|||
789
trad
26.02.13
✎
13:22
|
(777) формально-синтаксически написано правильно
|
|||
790
Ёпрст
26.02.13
✎
13:23
|
(787) Шутишь ?
И при каких условиях Док.ПолучитьАтрибут у числовой колонки вернёт не число ?! |
|||
791
Ёпрст
26.02.13
✎
13:24
|
(789) :))))))))))))))
|
|||
792
Ёпрст
26.02.13
✎
13:24
|
Или ты думаешь, что реквизиты
Цена"+Число(Прав(кат.Идентификатор(),1) в документе могут быть НЕ ЧИСЛОВЫЕ ? |
|||
793
bananan
26.02.13
✎
13:28
|
Ребята, кто может что-то подсказать? - Подскажите
|
|||
794
viktor_vv
26.02.13
✎
13:28
|
(792) Не удивлюсь. Правда в таком варианте
минцена.Получить() должна ошибку вернуть. |
|||
795
trad
26.02.13
✎
13:29
|
(790) при условии, что атрибут периодический
|
|||
796
trad
26.02.13
✎
13:29
|
(792) почему это в документе?
|
|||
797
viktor_vv
26.02.13
✎
13:32
|
(795) Думаю нет. ПолучитьАтрибут возвращает значение, а не реквизит, как объект.
И если он даже вернет значение элемента справочника, то в минцена.Получить() не хватает еще реквизита это элемента справочника. |
|||
798
bananan
26.02.13
✎
13:33
|
Дело в том что данный код:
Если кат.Выбран()=1 Тогда минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; ТЗ.Стр = Конт.НомерСтроки; ТЗ.Автор = Конт.Отпустил; КонецЕсли; В непрямом запросе работает... |
|||
799
viktor_vv
26.02.13
✎
13:33
|
И если бы условие выполнилось
Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда то была бы ошибка. |
|||
800
SherifSP
26.02.13
✎
13:33
|
Ну
|
|||
801
Wobland
26.02.13
✎
13:33
|
(798) данный код ваще в запросе не работает
|
|||
802
bananan
26.02.13
✎
13:35
|
(798) Можно попродбывать пойти от противного или вернеее с конца (ТЗ.Ошибка = " не встановлена ціна категорії ")
в начало или, вернее практически с нуля написать... Т.е. для данного запроса надо найти документы и т.д., в которых на товар не установлена цена категории, Что-то подобное кто-то когда делал? (я - нет) |
|||
803
trad
26.02.13
✎
13:36
|
(797) можешь поверит, а можешь проверить
|
|||
804
trad
26.02.13
✎
13:37
|
*поверить
|
|||
805
bananan
26.02.13
✎
13:38
|
(801) работает!
данный код - в функции, а в непрямом запросе используется функция, вернее там таки не запрос, вот код того скрипта который работает, но ОЧЕЭНЬ медленно: Процедура Сформировать() Сообщить(ТекущееВремя()); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы()); ОбДок = "Документ.РасходнаяНакладная"; СчетИтер = 0; Пока СчетИтер<1 Цикл ВыбДок=СоздатьОбъект(ОбДок); Если СчетИтер = 0 Тогда ОбДок = "Документ.РасходнаяНакладная"; Иначе ОбДок = "Документ.РасходнаяНакладнаяН"; КонецЕсли; ВыбДок=СоздатьОбъект(ОбДок); ВыбДок.УстановитьФильтр(1,0); ВыбДок.ВыбратьДокументы(ДатаС,ДатаПо); иф = 1; кво = 0; кДок = 0; кОшиб=0; Пока ВыбДок.ПолучитьДокумент()<>0 Цикл Состояние("Перевірка "+ВыбДок+" ..."); кДок = кДок + 1; ТЗ=Разность(ВыбДок); Если ТЗ.КоличествоСтрок()>0 Тогда ПечДок = ВыбДок.ТекущийДокумент(); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл кОшиб=кОшиб+1; ПечОшибка = ТЗ.Ошибка; ПечТовар = ТЗ.Товар; Если ТЗ.Стр <> 0 Тогда ПечНомерСтрокиСОшибкой = ТЗ.Стр; Иначе ПечНомерСтрокиСОшибкой = "А хто його знає"; КонецЕсли; Таб.ВывестиСекцию("Документ"); ПредНомер = ""; ПредНомер = ПечДок.НомерДок; // Пока ТЗ.ПолучитьСтроку()=1 Цикл ПечОшибка = ТЗ.Ошибка; ПечТовар = ТЗ.Товар; ПечНомерСтрокиСОшибкой = ТЗ.Стр; кво = кво+1; Если СтрДлина(ТЗ.Ошибка)>0 Тогда //Обл = Таб.Область(12+1*иф, 2,(12+1*иф), 2); //Обл.ЦветФона(1, 1, 1); //Обл.ЦветТекста(125, 125, 125); Таб.ВывестиСекцию("Ошибка"); иф=иф+1; КонецЕсли; // КонецЦикла; КонецЦикла; КонецЕсли; КонецЦикла; СчетИтер = СчетИтер + 1; КонецЦикла; Состояние("Готово!"); Предупреждение("Количество документов - "+кДок+" в них "+кОшиб+" ошибок"); Таб.ТолькоПросмотр(1); Таб.Защита(1); Таб.Показать("Негаразд",""); Сообщить("Количество документов - "+кДок+" в них "+кОшиб+" ошибок"); Сообщить(ТекущееВремя()); КонецПроцедуры |
|||
806
bananan
26.02.13
✎
13:43
|
(799-800) Т.е. Вы хотите сказать, что:
Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; вообще ненужный код? |
|||
807
viktor_vv
26.02.13
✎
13:44
|
(803) Прикольно, таки работает.
|
|||
808
viktor_vv
26.02.13
✎
13:46
|
(807) И для числа тоже работает.
|
|||
809
sapphire
26.02.13
✎
13:48
|
(804) (807) Можно вообще без проверки на периодичность сделать.
|
|||
810
Wobland
26.02.13
✎
13:48
|
(808) шо, таки у числа можно что-то получить?
|
|||
811
sapphire
26.02.13
✎
13:48
|
(806) Отчасти, да, этот код лишний.
|
|||
812
trad
26.02.13
✎
13:49
|
(809)можно
|
|||
813
sapphire
26.02.13
✎
13:49
|
а если посмотреть на логику в (798) то можно вообще ничего не писать. Паренек явно не в курсе, что умножение числа на нуль даст нуль.
|
|||
814
sapphire
26.02.13
✎
13:50
|
(812) Тем более к чему такая адская проверка непонятно.
|
|||
815
viktor_vv
26.02.13
✎
13:50
|
(810) Ну там не от числа. ПолучитьАтрибут() для периодического реквизита возвращает объект, для которого работает Получить(), так что там по большому счету неважен тип значения самого реквизита.
|
|||
816
viktor_vv
26.02.13
✎
13:52
|
(815)+ Я так понял для непереодического тоже самое, что ли ?
|
|||
817
sapphire
26.02.13
✎
13:53
|
(815) Проверка на периодичность не нужна вообще -
ИспользоватьДату+НайтиЭлемент |
|||
818
sapphire
26.02.13
✎
13:53
|
(816) Да.
|
|||
819
trad
26.02.13
✎
13:53
|
(813) с чего вдрег там обязательно умножение на нуль?
|
|||
820
trad
26.02.13
✎
13:54
|
вдрег = вдруг
|
|||
821
sapphire
26.02.13
✎
13:54
|
(819) Вторая выборка по 1SCONST для Ставки явно лишняя, не находишь?
|
|||
822
bananan
26.02.13
✎
13:54
|
(811) Отчасти или не нужен совсем??
(817) ИспользоватьДату+НайтиЭлемент - это мне надо в прямом запросе исполльзовать... |
|||
823
viktor_vv
26.02.13
✎
13:56
|
(817) Че-то попробовал, для непериодического примитивного типа возвращает само значение, соотвественно на Получить() отваливается.
|
|||
824
sapphire
26.02.13
✎
13:56
|
(820) Фрагмент и (798):
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); // Это явно не нужно для проверки ниже, т.к. ставка врядли равна - 1 :)))) Если минцена=0 Тогда |
|||
825
trad
26.02.13
✎
13:56
|
(821) лишняя. код можно написать оптимальнее.
умножение на нуль то где? скажешь? |
|||
826
viktor_vv
26.02.13
✎
13:56
|
(823)+ А, в комплекте с импользоватьДату(). Сейчас. Мне так лучше запоминается, когда сам пощупаешь :).
|
|||
827
sapphire
26.02.13
✎
13:57
|
(823) Потому что получить в данном случае применяется для периодического реквизита справочника...
|
|||
828
sapphire
26.02.13
✎
13:57
|
(822) Пиши еще :)
|
|||
829
sapphire
26.02.13
✎
13:58
|
(825)
минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); здесь при минцена=0 какой-то иной результат можно получить? |
|||
830
trad
26.02.13
✎
13:59
|
(824) "ставка врядли равна - 1" ну, не знаю, мне сложно ответить
|
|||
831
sapphire
26.02.13
✎
14:01
|
(826) Метод справочника ИспользоватьДату вроде как работает всегда и вне зависимости, есть периодические реквизиты, или нет, но, при использовании этого метода есть одна тонкость :)))
|
|||
832
trad
26.02.13
✎
14:01
|
(829) я понял о чем ты
|
|||
833
sapphire
26.02.13
✎
14:01
|
(832) Просто получить все отрицательные ставки проще простого, если они есть :)
|
|||
834
viktor_vv
26.02.13
✎
14:02
|
(827) Да, вкурил уже насчет использоватьДату, тогда получить() уже не надо.
|
|||
835
sapphire
26.02.13
✎
14:09
|
(834) Да, но есть ньюанс.
|
|||
836
bananan
26.02.13
✎
14:10
|
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1)));
Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); - это цена товара без НДС? --- Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; - пропускаем раз вроде как ненужная проверка осталось еще получить минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); кто может что-то подсказать? |
|||
837
viktor_vv
26.02.13
✎
14:10
|
(835) Это про невозможность одновременного использования ИспользоватьДату() и получить() ?
|
|||
838
sapphire
26.02.13
✎
14:11
|
(837) Нет, про особенность ИспользоватьДату
|
|||
839
sapphire
26.02.13
✎
14:12
|
(836) Кого, куда, и через что, ты там пропускаешь? :)
|
|||
840
viktor_vv
26.02.13
✎
14:12
|
(838) Колись уже :).
|
|||
841
bananan
26.02.13
✎
14:15
|
Помогите "озапросить" этот кусок кода тлт по-крайней мере - разобраться в нем:
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); - это цена товара без НДС? --- Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; - пропускаем раз вроде как ненужная проверка осталось еще получить минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); кто может что-то подсказать? |
|||
842
Ёпрст
26.02.13
✎
14:17
|
(795) :))))))))))))))))))))))))))))))))))))))))))))))))))))
ПЕРИОдический реквизит в табличной части документа ?!!!!!!!!1 Ну ты жгешььь! |
|||
843
trad
26.02.13
✎
14:21
|
(842) глаза протри уже.
ценаХ - атрибут ТМЦ, а не ТЧ документа |
|||
844
Ёпрст
26.02.13
✎
14:21
|
Пилять, опасайтесь укусов аутора - можно заболеть ненароком.
|
|||
845
sapphire
26.02.13
✎
14:22
|
(840) СП:
Замечание: Если к объекту применен метод ИспользоватьДату, то нельзя применять к этому же объекту метод Получить. // ВОТ ЭТО МАЛО КТО ЧИТАЕТ: Метод нельзя использовать через две точки. |
|||
846
sapphire
26.02.13
✎
14:22
|
(844) А ненарок излечим?
|
|||
847
Ёпрст
26.02.13
✎
14:22
|
(843) аааа, от оно че, михалыч!
:))))))))))) |
|||
848
Mikeware
26.02.13
✎
14:23
|
(842) а я представил себе.. зачетно!
эх, еще бы _вид_ реквизита был периодическим!!! вообще бы зачетно было :-) |
|||
849
sapphire
26.02.13
✎
14:24
|
(841) Ты так упорен в своей дремучести см. (813).
|
|||
850
sapphire
26.02.13
✎
14:25
|
(848) А он небось таковой и есть :)
|
|||
851
viktor_vv
26.02.13
✎
14:35
|
(845) А, про это, так я в (837) о том же.
Поэтому и не полюляю ИспользоватьДату(), а то потом возвращаешься воткнешь где-нибудь Получить(). |
|||
852
viktor_vv
26.02.13
✎
14:36
|
(851)+ Тьфу ты, реально, мало кто дочитывает :)), (845) понял.
|
|||
853
Privalov
26.02.13
✎
14:37
|
Скоро ветку закроют, после тыщи постов, а проблема автора так и не решена и исходники дельфевские нормально не показал.
|
|||
854
viktor_vv
26.02.13
✎
14:38
|
(853) Не боись, автор еще танчики переплюнет :).
|
|||
855
Privalov
26.02.13
✎
14:39
|
Он там уже новую ветку создал. ))
|
|||
856
bananan
26.02.13
✎
14:43
|
(855) Новую вытку зкрыли,
а создал потому что это не откликалась у меня... Кто-то из вас мне что-нибудь полезное подскажет?? |
|||
857
bananan
26.02.13
✎
14:43
|
+(856)
Создаю новую ветку, потому что ветка Запрос по обработке документов... на 824 собщении вроде как закончилась так вод о запросе: есть код и его нужно "озапросить": минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); - это цена товара без НДС? --- Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; - пропускаем раз вроде как ненужная проверка осталось еще получить минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); кто может что-то подсказать? |
|||
858
Mikeware
26.02.13
✎
14:46
|
(857) ветка заканчивается после 1000 сообщений...
|
|||
859
Wobland
26.02.13
✎
14:55
|
(858) то есть где-то три по триста. это уже было
|
|||
860
sapphire
26.02.13
✎
15:10
|
(857) Ты, наверное, ждешь готовый запрос?
|
|||
861
bananan
26.02.13
✎
15:11
|
(859) Как всегда - бесценная информация...
|
|||
862
bananan
26.02.13
✎
15:12
|
(860) Да нет не жду,:
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); - это цена товара без НДС? --- Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; - пропускаем раз вроде как ненужная проверка осталось еще получить минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); кто может что-то подсказать? |
|||
863
bananan
26.02.13
✎
15:13
|
+(862) минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); - это цена товара без НДС?
Да ил нет? Если нет - тогда что это? |
|||
864
Wobland
26.02.13
✎
15:15
|
(862) ещё пару раз, пожалуйста
|
|||
865
sapphire
26.02.13
✎
15:15
|
(863) А мы откуда знаем, что в твоей конфе имеется ввиду под
ТМЦ.СтавкаНДС.Ставка? |
|||
866
sapphire
26.02.13
✎
15:17
|
(863) Скорее да, нежели нет.
|
|||
867
bananan
26.02.13
✎
15:19
|
(865) ТМЦ - это товар в документе, стакаНДС -Справчоник.ВидыНалогов, А ставка - число(7.4)
|
|||
868
sapphire
26.02.13
✎
15:20
|
(867) И?
|
|||
869
bananan
26.02.13
✎
15:21
|
(866) я тотже так подумал еще 15 числа, но потом мне здесь столько всего наговорили, а если минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); - это цена товара без НДС, то ее легко в запросе получить...
|
|||
870
bananan
26.02.13
✎
15:21
|
(867) Как к этому достучаться в прямом запросе?
|
|||
871
Wobland
26.02.13
✎
15:27
|
(870) выбрать спрставки.ставка левое справочник ставки по тмц.ставкандс=спрставки.ид
как-то так |
|||
872
Wobland
26.02.13
✎
15:27
|
(871) иннер джойн
|
|||
873
bananan
26.02.13
✎
15:30
|
(872) Спасибо - сейчас попробую, но вот исходя из того что минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); - это цена товара без НДС
текст запросу у меня получился такой: |SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, 'має ціну нижчу за прихідну' as Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , $ДокН.ТМЦ as ТМЦ | , ДокН.lineno_ as lineno_ | , $ДокН.Кво * $ДокН.Коэффициент | , $ДокН.СуммаСНДС СуммаСНДС | , $ДокН.ЦенаБезНДС AS ЦенаБезНДС | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | FROM _1SJourn as Жур (nolock) | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = $ДокН.ТМЦ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладнаяН) |) Данные |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |"; Так вот после того как добавил выбор ЦенаБезНДС выдает ошибку: No column was specified for column 5 of 'Данные' Что здесь нетак? Насколько я понял надо ЦенаБезНДС еще где-то прописать? |
|||
874
bananan
26.02.13
✎
15:31
|
+(873) Запрос без :
| , $ДокН.ЦенаБезНДС AS ЦенаБезНДС работает... |
|||
875
trad
26.02.13
✎
15:35
|
(873) тут
| , $ДокН.Кво * $ДокН.Коэффициент потерял алиас |
|||
876
bananan
26.02.13
✎
15:38
|
(875) Спасибо! поставилальяс - запрос заработал..
Теперь, по этому запросу не так уж много осталось :) |
|||
877
Wobland
26.02.13
✎
15:40
|
(876) около ста двадцати постов
|
|||
878
bananan
26.02.13
✎
15:46
|
(877) Добрый ты, :(
|
|||
879
Wobland
26.02.13
✎
15:48
|
(878) злой я. ошибки логические допускаю. через 120 постов ветка кончится, а не запрос напишется
|
|||
880
bananan
26.02.13
✎
15:51
|
(879) Как-когда - то добрый, то злой :)
Ладно. по поводу запроса, на сколько я понимаю выбрать ставку НДС НАдо в подзапросе (Данные): | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , $ДокН.ТМЦ as ТМЦ | , ДокН.lineno_ as lineno_ | , $ДокН.Кво * $ДокН.Коэффициент as Количество | , $ДокН.СуммаСНДС СуммаСНДС | , $ДокН.ЦенаБезНДС AS ЦенаБезНДС | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор Да? |
|||
881
Wobland
26.02.13
✎
15:52
|
я намекал на то, что желание получить нечто через две точки выливается в дополнительную таблицу и соединение с ней
|
|||
882
bananan
26.02.13
✎
15:53
|
(881) Это я понял. Так что теперь в подзапросе (Данные) надо еще один подзапрос писать?
|
|||
883
Wobland
26.02.13
✎
15:53
|
(882) я в твой запрос считай что не глядел
|
|||
884
bananan
26.02.13
✎
15:54
|
(883) Посмотри, ПОЖАЛУЙСТА:
|SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, 'має ціну нижчу за прихідну' as Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , $ДокН.ТМЦ as ТМЦ | , ДокН.lineno_ as lineno_ | , $ДокН.Кво * $ДокН.Коэффициент as Количество | , $ДокН.СуммаСНДС СуммаСНДС | , $ДокН.ЦенаБезНДС AS ЦенаБезНДС | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | FROM _1SJourn as Жур (nolock) | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = $ДокН.ТМЦ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладнаяН) |) Данные |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |"; |
|||
885
Wobland
26.02.13
✎
15:57
|
$ПоследнееЗначение.ВидыНалогов.Ставка - а это не ставка?
|
|||
886
Wobland
26.02.13
✎
16:00
|
(885) а типа число надо, а не справочник? ну да. ещё одна таблица, связь по этой ставке и ссылке в справочнике
|
|||
887
sapphire
26.02.13
✎
16:20
|
(872) Да уж :))))))
|
|||
888
sapphire
26.02.13
✎
16:21
|
(885) ... а зачем?!
|
|||
889
Mikeware
26.02.13
✎
16:25
|
(888)
- Доктор, я жить буду? -- а смысл?? © |
|||
890
sapphire
26.02.13
✎
16:28
|
(886) А типа вычислить имя нужного поля :)
Вотъ в чъм вопросъ. |
|||
891
bananan
26.02.13
✎
16:49
|
(885_886) Не знаю, буду разбираться, перед этим искал, нашел и исправил баг в запросе, который писал месяц назад (без помощи форума)
|
|||
892
bananan
26.02.13
✎
16:50
|
(887-890) Вот из-за такого фулад ветки и закрывают
|
|||
893
sapphire
26.02.13
✎
16:54
|
(892)
аааа, от оно че, михалыч! |
|||
894
sapphire
26.02.13
✎
16:55
|
(892) А вот в (890) указано де проблемно знаете ли,
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))) получить прямым запросом... |
|||
895
sapphire
26.02.13
✎
16:56
|
(892) Паче того, с арифметикой у вас зело проблемы, впрочем и мозг тоже отсутствует, как класс...
|
|||
896
sapphire
26.02.13
✎
16:56
|
(892) А ты модераторам пожалуйся :)
|
|||
897
batman69
26.02.13
✎
16:57
|
Да, то да потому 200 постов.
|
|||
898
sapphire
26.02.13
✎
16:57
|
(897) Щаз. Куда более :)
|
|||
899
Злопчинский
26.02.13
✎
16:58
|
Хорошие программисты 1С после смерти
попадают в рай. Плохие - продолжают работать одинесником.. |
|||
900
sapphire
26.02.13
✎
16:58
|
Еще 100 постов можно :)
|
|||
901
Злопчинский
26.02.13
✎
16:58
|
900!
|
|||
902
Злопчинский
26.02.13
✎
16:58
|
тьфу, опоздун
|
|||
903
Mikeware
26.02.13
✎
16:58
|
(894) только с извратом - получить все цифровые, умножить на 1/0,ну и сложить...
|
|||
904
sapphire
26.02.13
✎
16:59
|
(903) По уму, пора предложить ему использовать временные таблицы... Но, знаете ли, сервер жалко...
|
|||
905
sapphire
26.02.13
✎
17:00
|
(903) ... а потом взять фсио и ... поделить!
|
|||
906
sapphire
26.02.13
✎
17:01
|
(903) Вот кста, ТС в решении отсутствующей цены зело разумом не радует...
|
|||
907
sapphire
26.02.13
✎
17:02
|
(903) При чем, ключевое чаво он не понел, так это то, що немае цены...
|
|||
908
bananan
26.02.13
✎
17:05
|
(885) в функции скрипта такой код:
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда //2/ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); ТЗ.НоваяСтрока(); ТЗ.Товар = Конт.ТМЦ; ТЗ.Ошибка = " не встановлена ціна категорії "; т.е. Видимо минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); будет $ПоследнееЗначение.ВидыНалогов.Ставка... ДА? |
|||
909
Mikeware
26.02.13
✎
17:06
|
(906)(907)
Стоит негр на улице и пьёт молоко. Мимо проходит белый, останавливается перед ним, смотрит так пристально и говорит: - Не-е-е, не поможет... © |
|||
910
sapphire
26.02.13
✎
17:08
|
(908) Зачем тобi ся ставка далась?
|
|||
911
sapphire
26.02.13
✎
17:09
|
(909) Смотри какой упорный. А может это происки разведки сопредельной державы? На нас так сказать, свои программерские штучки тестируют? :)
|
|||
912
sapphire
26.02.13
✎
17:16
|
(908) Вот что тебе надо получить:
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); |
|||
913
Mikeware
26.02.13
✎
17:21
|
(905) а зачем делить-то? мы ж не отнимаем...
|
|||
914
bananan
26.02.13
✎
17:25
|
(912) Кажетсыя ты мне и сказал что Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); это вроде как ЦенаБезНДС??
|
|||
915
Mikeware
26.02.13
✎
17:26
|
а разве Число(Прав(кат.Идентификатор(),1)) может быть равно "БезНДС" ?
|
|||
916
bananan
26.02.13
✎
17:26
|
м вообще - я тото не пойму...
минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Как минЦена может быть равной нулю?? |
|||
917
sapphire
26.02.13
✎
17:27
|
(914) И чо?
|
|||
918
bananan
26.02.13
✎
17:27
|
(915) тут, наксолько я понимаю берется цена без НДС для данного товара в гривне, ну или в рубле
|
|||
919
bananan
26.02.13
✎
17:28
|
(917) ЦенаБезНДС в запросе уже выбирается:
| , $ДокН.ЦенаБезНДС AS ЦенаБезНДС |
|||
920
sapphire
26.02.13
✎
17:30
|
(918) Ну и? Ну и что дальше-то?
|
|||
921
Mikeware
26.02.13
✎
17:31
|
То, что эта цена без НДС - это понятно из дальнейших вычислений. а вот может ли Число(Прав(кат.Идентификатор(),1)) быть равно "БезНДС" ?
|
|||
922
sapphire
26.02.13
✎
17:32
|
(919) А зачем, спрашивается, это надо?!
В (914) ОТКУДА ЦЕНА БЕРЕТСЯ, БЕСТОЛОЧЬ?! |
|||
923
sapphire
26.02.13
✎
17:33
|
(921) Теоретически, да, но интересно, когда цена вообще не установлена. В этом, так сказать цель егойного очередного опуса...
|
|||
924
sapphire
26.02.13
✎
17:33
|
(921) А вот интересно, его работодатель мисту не читае?
|
|||
925
Mikeware
26.02.13
✎
17:37
|
(923) даже теоретически не может.
значения могут, конечно, совпадать - но явно не обязаны. иначе не было бы нужды во всей этой тряхомудии... |
|||
926
sapphire
26.02.13
✎
17:38
|
(925) Мишь, ты об чем, собсно?
|
|||
927
sapphire
26.02.13
✎
17:39
|
(925) Егойное поделко:
минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда Ключевая строка - последняя |
|||
928
Mikeware
26.02.13
✎
17:43
|
(927)
в военное время пи равняется четырем, а синус может достигать 3!! может, у них ставка НДС -100% - обычное дело? |
|||
929
sapphire
26.02.13
✎
17:44
|
(928) Ну таки лягко проверить :)
|
|||
930
Mikeware
26.02.13
✎
17:45
|
(926) о том, что Число(Прав(кат.Идентификатор(),1)) - это какая-то цифра от 0 до 9
соответсвенно, минцена - это одно из {Цена0...Цена9} |
|||
931
sapphire
26.02.13
✎
17:47
|
(930)
аааа, от оно че, михалыч! Дык, там ранее он публиковал кусок сей поделки где категория определяется каким-то атрибутом, то ли доставка, то ли еще чем-то.... Короче, тупо назвали так переменную и усе. |
|||
932
sapphire
26.02.13
✎
17:50
|
(930) 9 UNION-ов или ТС выберет 9 left join?
|
|||
933
Mikeware
26.02.13
✎
17:53
|
(932) тупой case не спасет отца русской пиз... пардон, демократии?
|
|||
934
sapphire
26.02.13
✎
18:13
|
(933) Точно, и к каждому варианту кейса прилепить скалярный запрос :)
|
|||
935
Mikeware
26.02.13
✎
18:15
|
(934) ТКВ
|
|||
936
bananan
27.02.13
✎
12:52
|
Добрый день!
Вопрос: данный которые возвращает прямой запрос я вывожу в таблицу значений, можно ли всю информацию из таблицы значений сбросить через клипборд и есле можно то как? |
|||
937
Wobland
27.02.13
✎
12:54
|
нет
|
|||
938
Wobland
27.02.13
✎
12:54
|
а на зачем?
|
|||
939
bananan
27.02.13
✎
12:56
|
(938) Чтобы с помощью Екселя сравнить результаты работы скрипта и запроса...
|
|||
940
Mikeware
27.02.13
✎
12:57
|
Ну и выведи ТЗ в таблицу. в чем проблемы?
|
|||
941
Wobland
27.02.13
✎
13:00
|
(940) а это уже вполне себе отдельная ветка. с тысячей вакантных постов
|
|||
942
Mikeware
27.02.13
✎
13:03
|
(941) да там кода строк 30 - в универсальном выводе любой ТЗ в таблицу. если без заголовков, то вообще 11 строк.
|
|||
943
bananan
27.02.13
✎
13:05
|
(942) У тебя что-то кроме желчи есть???
|
|||
944
Wobland
27.02.13
✎
13:06
|
ох уж мне ваши семёрки...
ТабДок=Новый ТабличныйДокумент; Построитель=Новый ПостроительОтчета; Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(ТЗ); Построитель.Вывести(ТабДок); ТабДок.Показать(); |
|||
945
bananan
27.02.13
✎
13:06
|
+(943) Сори предыдущее сообщение адресовалось ВобландУУУ
|
|||
946
Wobland
27.02.13
✎
13:07
|
(945) есть
|
|||
947
bananan
27.02.13
✎
13:07
|
(944) Новый ТабличныйДокумент - вот изит? Ты это на 1С 7.7. запустишь???
|
|||
948
Wobland
27.02.13
✎
13:08
|
(947) это восьмёрка
|
|||
949
Privalov
27.02.13
✎
13:18
|
(948)Зачем ты с ним так ? ))
|
|||
950
Mikeware
27.02.13
✎
13:31
|
(947) еще раз: _всего 11 строк!
причем самых-самых тупых. Инициализация таблицы, два вложенных цикла, две строки внутри, вывод... по строке в минуту - и мог бы с 12:52 до 15:03 написать.... |
|||
951
bananan
27.02.13
✎
13:33
|
(950) Да сейчас буду писать
|
|||
952
Wobland
27.02.13
✎
13:33
|
(950) вот наверняка Присоединить там. а это уже второе измерение, не у всех мозг справляется (ничего личного, таких людей есть)
|
|||
953
Privalov
27.02.13
✎
13:35
|
Что будет когда ветка закончится?
|
|||
954
Wobland
27.02.13
✎
13:38
|
(953) всем участникам выдадут медаль "за долготерпение"
|
|||
955
Mikeware
27.02.13
✎
13:42
|
(954) орден сутулого. с завязкой на спине...
|
|||
956
bananan
27.02.13
✎
14:09
|
Что-то непойму. код:
ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); ТбЗн.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица1"); Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы()); // цикл для вывода значений из ТЗ1 в Таблица1 Пока(ТбЗн.ПолучитьСтроку=1) Цикл Выдает ошибку Пока(ТбЗн.ПолучитьСтроку=1) Цикл {\\SERVER12\VPKTEST$\EXTFORMS\ЦІНАПОКАТЕГОРІЇ.ERT(250)}: Поле агрегатного объекта не обнаружено (ПолучитьСтроку) Почему? |
|||
957
Mikeware
27.02.13
✎
14:10
|
(956) и чего тут понимать? все по-русски написано...
|
|||
958
Privalov
27.02.13
✎
14:11
|
ПолучитьСтроку()
|
|||
959
bananan
27.02.13
✎
14:13
|
(957) Не знаешь, так и скажи..
ТбЗн.ВыбратьСтроки(); - полеагрегатного объкта есть и работает а надо было так написать (опечатался я): Пока(ТбЗн.ПолучитьСтроку()=1 |
|||
960
viktor_vv
27.02.13
✎
14:14
|
(956) Ты уж извини, но перед тем как постить вопрос, ты хотя бы немного подумать над ошибкой можешь, ну так, чисто для разнообразия.
|
|||
961
Wobland
27.02.13
✎
14:17
|
(960) у него в организме нет органа, которым думают
|
|||
962
Wobland
27.02.13
✎
14:18
|
пять лет человек с семёркой общается...
|
|||
963
Mikeware
27.02.13
✎
14:20
|
(962)
снял пожилой профессор проститутку... залез на нее... ока как подмахнула, он аж с нее свалился... встал, поправил очки на носу, и заявляет - "я не понял, тут кто кого иппет?" © зы. это не он с программой общается, а программа с ним... ибо программа поинтеллектуальнее будет... |
|||
964
Wobland
27.02.13
✎
14:26
|
нашёл тут прекрасное:
Логическое И возвращает истину когда ВСЕ условия истинны? |
|||
965
Wobland
27.02.13
✎
14:26
|
(964) это спросил человек, называющий себя программистом
|
|||
966
Privalov
27.02.13
✎
14:29
|
(959) Не разглядел? (958)
|
|||
967
Wobland
27.02.13
✎
14:31
|
добьём уже до тыщи, а?
А что нам по этому вопросу говорит Отладчик?
|
|||
968
Privalov
27.02.13
✎
14:34
|
Ушел автор, сегодня не добьем. )))
|
|||
969
Wobland
27.02.13
✎
14:36
|
(968) сейчас он результат запроса научится видеть и вернётся обратно
|
|||
970
Privalov
27.02.13
✎
14:45
|
(969) Угу ))
|
|||
971
bananan
27.02.13
✎
15:20
|
Вобла-нд вышел на крыльцо да и изрыгнул...
|
|||
972
bananan
27.02.13
✎
17:28
|
еще один вопро возник, из прымого запроса данные передаются в таблицу значений, из таблицы значений в экранную таблицу...
Какое поле надо передать в таблицу, чтобы в ней можно былу кликнуть на данное поле и поле этого открылся бы документ..? |
|||
973
Mikeware
27.02.13
✎
17:34
|
зачет!
|
|||
974
Mikeware
27.02.13
✎
17:35
|
(972) предай любое поле, однозначно идентифицирующее тот объект, который хочешь открыть...
|
|||
975
bananan
27.02.13
✎
17:45
|
Если передать номер документа - так сойдет?
|
|||
976
Mikeware
27.02.13
✎
17:50
|
(975) а номер однозначно идентифицирует данный объект?
в принципе, сожещь хоть строку передавать, типа "документ, созданый банананом в тихую лунную ночь" - только обрабатывай это сам. |
|||
977
bananan
27.02.13
✎
17:53
|
(976) А что предать запрос простейший:
|SELECT | DocNo |FROM _1SJourn as Жур (nolock) | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) |"; Потому я и спрашивал о номере документа.. |
|||
978
viktor_vv
27.02.13
✎
17:56
|
Это задел на следующую тему до тысячи постов :).
|SELECT | DocNo, | Жур.IDDOC as [Док $Документ], | Жур.IDDOCDEF as Док_вид Передавай Док . |
|||
979
viktor_vv
27.02.13
✎
17:58
|
И это, на всякий случай, а что в твоем понимании
"Какое поле надо передать в таблицу" |
|||
980
viktor_vv
27.02.13
✎
17:59
|
(979)+ Имеется ввиду понимание тобой механизма расшифровки.
|
|||
981
bananan
27.02.13
✎
18:04
|
(978) Передал Док - все нормально показывает, но там чтобы его кликнуть можно было и открыть какие-то ньюансы в работае с таблицей?
|
|||
982
Mikeware
27.02.13
✎
18:05
|
(981) эти "ньюансы" описаны в локументации.
а примеры "ньюансов" - есть в типовой конфинурации. |
|||
983
bananan
27.02.13
✎
18:07
|
(982) Спасибо за "исчерпивающий ответ"
|
|||
984
viktor_vv
27.02.13
✎
18:08
|
(983) В (980) есть ключевое слово "Расшифровка".
|
|||
985
bananan
27.02.13
✎
18:28
|
взял из типовой конфигурации такой код:
Таб.Опции(0,0,Таб.ВысотаТаблицы()); Пока(ТЗ.ПолучитьСтроку()=1) Цикл Таб.ВывестиСекцию("Документ"); КонецЦикла; Таб.ТолькоПросмотр(1); Таб.Защита(0); ; Таб.ОбластьПечати(2); Таб.Показать() В ячейках таблицы : идет документ (номер и дата в скобаках), но он не выбирвается... |
|||
986
Mikeware
27.02.13
✎
18:36
|
Неправильный у тебя ник. надо было как baobab регистрится...
по песне высоцкого.... |
|||
988
bananan
27.02.13
✎
18:40
|
(986) Из-за таких вот советов и 1000 не хватит...
|
|||
989
Sh1ko
27.02.13
✎
18:42
|
Ветка - тренажер для телепатов?
|
|||
990
Sh1ko
27.02.13
✎
18:42
|
Я к вам!
|
|||
991
bananan
27.02.13
✎
18:43
|
(990) смотри (985) как сделать, чтобы документ открывался когда кликаешь на него?
|
|||
992
Sh1ko
27.02.13
✎
18:43
|
(985) Что открывался документ при двойном клике на ячейке, необходимо в свойствах ячейки, в поле расшифровка - написать что-то типа ТЗ.Док.ТекущийДокумент()
|
|||
993
Mikeware
27.02.13
✎
18:45
|
(990) телепат? вот и телепай!!! :-))
|
|||
994
batman69
27.02.13
✎
18:47
|
(991)Сработало? - (992)
|
|||
995
bananan
27.02.13
✎
18:47
|
(992) в расшифровке так и написал: ТЗ.Док.ТекущийДокумент() а двойной щелчек не работает и курсор мыши не стал лупой....
|
|||
996
batman69
27.02.13
✎
18:48
|
(995) У тебя есть ТЗ.Док , а в ней ТекущийДокумент ?
|
|||
997
batman69
27.02.13
✎
18:49
|
Все, до 1000 и закончится сериал, жаль.
|
|||
998
Sh1ko
27.02.13
✎
18:50
|
А перед выводом таблицы таб.толькопросмотр(1) есть?
|
|||
999
Sh1ko
27.02.13
✎
18:50
|
а, вижу что есть
|
|||
1000
Aswed
27.02.13
✎
18:50
|
ТЫСЯЧА!!!!
ШТУКА!!!!! 1000!!!! |
|||
1001
bananan
27.02.13
✎
18:50
|
(996) Тз - это таблица значений в ней только DjcNo, Док, Док_вид...
|
|||
1002
Aswed
27.02.13
✎
18:51
|
Ха!!!
Я самый крутой!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |