Имя: Пароль:
1C
1C 7.7
v7: Запрос по обработке документов...
Ø (длинная ветка 27.02.2013 18:51)
,
0 bananan
 
15.02.13
17:57
Значит так, написал (ко нечно же с вашей помощью) скрипт который проверяет расходные документы за указанный период и если в документе находит "ошибку" (скорее неточность) - то он и сообщает этот документэ, эго автора строку документа товар и выдает описание ошибки...
ТАк вот документы за ноябрь прошлого года - скрипт обрабатывал 13,5 минут - это долго...
как бы оптимизировать работу чтобы скрипт работал раза в 2-3 быстрее?
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
добьём уже до тыщи, а?

А что нам по этому вопросу говорит Отладчик?

+(52) Предупреждая вопросы - F12, F9, F8.

(53) Спасибо. Сейчас попробую отладчик

(53) По F12 запустился Отладчик...
а дальше как его юзать?
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
Ха!!!
Я самый крутой!!!
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой