|
1С:Предприятие
:: 1С:Предприятие 7.7 и ранее
|
|
| ||
mihalich979 07.12.20 - 10:17 | при выгрузке данных в конфигураторе:
вот такая ошибка: SQL State: 42000 Native: 605 Message: [Microsoft][ODBC SQL Server Driver][SQL Server]Attempt to fetch logical page (1:654719) in databaze 'zakaz' belongs to object 'SC3065', not to object 'SC907'. при запуске в обычном режиме: ошибка такая: crosoft Visual C++ Runtime Library Runtime Error! Program: This application has requested the Runtime to terminate it in an unusual way. Please contact the application's suport for more information. Помогите кто может. | ||
ДенисЧ 1 - 07.12.20 - 10:19 | Бекап. Его далеко в сейф.
Копия. На копии DBCC CHECKDB | ||
Злопчинский 2 - 07.12.20 - 10:19 | 1. сделать бэкап скульной базы скульными методами2. убедиться что бэкап рабочий 3. и можно попробовать добавить константу и тут же ее удалить. сохранить. что скажет пофигуратор? | ||
trdm 3 - 07.12.20 - 10:53 | Побилась базка. Акуратно попытаться восстановить.
Спец тут есть. | ||
Garykom 4 - 07.12.20 - 10:55 | Хороший повод выкинуть 77 и перейти на 8 | ||
Mikeware 5 - 07.12.20 - 10:57 | (4) сдохнет база снеговика - это будет повод к интегралу? | ||
mihalich979 6 - 07.12.20 - 11:40 | DBCC CHECKDBвыдает следуюущее: Server: Msg 8928, Level 16, State 6, Line 1 Object ID 0, index ID 0: Page (1:509402) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:547247) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:584767) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:654716) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:661577) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:751993) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:874537) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:906387) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:994774) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:999116) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1041428) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1085727) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1175810) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1205074) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1248525) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1286258) could not be processed. See other errors for details. Server: Msg 8905, Level 16, State 1, Line 1 Extent (1:1292024) in database ID 13 is marked allocated in the GAM, but no SGAM or IAM has allocated it. DBCC results for 'zakaz'. Server: Msg 8905, Level 16, State 1, Line 1 Extent (1:1363944) in database ID 13 is marked allocated in the GAM, but no SGAM or IAM has allocated it. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1418686) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1432071) could not be processed. See other errors for details. Server: Msg 8905, Level 16, State 1, Line 1 Extent (1:1467736) in database ID 13 is marked allocated in the GAM, but no SGAM or IAM has allocated it. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1529957) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1544190) could not be processed. See other errors for details. Server: Msg 8928, Level 16, State 1, Line 1 Object ID 0, index ID 0: Page (1:1545303) could not be processed. See other errors for details. Server: Msg 8905, Level 16, State 1, Line 1 Extent (1:1569072) in database ID 13 is marked allocated in the GAM, but no SGAM or IAM has allocated it. Server: Msg 8905, Level 16, State 1, Line 1 Extent (1:1689368) in database ID 13 is marked allocated in the GAM, but no SGAM or IAM has allocated it. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086734270464 owned by data record identified by RID = (1:104:1) id = 2062630391 and indid = 2. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086755700736 owned by data record identified by RID = (1:105:2) id = 1987652878 and indid = 1. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086755766272 owned by data record identified by RID = (1:105:3) id = 1987652878 and indid = 2. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086755831808 owned by data record identified by RID = (1:105:4) id = 1987652878 and indid = 3. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086755897344 owned by data record identified by RID = (1:105:5) id = 1987652878 and indid = 4. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086755962880 owned by data record identified by RID = (1:105:6) id = 1987652878 and indid = 5. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086756028416 owned by data record identified by RID = (1:105:7) id = 1987652878 and indid = 6. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086756093952 owned by data record identified by RID = (1:105:8) id = 1987652878 and indid = 7. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086756159488 owned by data record identified by RID = (1:105:9) id = 1987652878 and indid = 8. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086750326784 owned by data record identified by RID = (1:106:0) id = 230524521 and indid = 1. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086750392320 owned by data record identified by RID = (1:106:1) id = 230524521 and indid = 2. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086750457856 owned by data record identified by RID = (1:106:2) id = 230524521 and indid = 3. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086750523392 owned by data record identified by RID = (1:106:3) id = 230524521 and indid = 4. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086750588928 owned by data record identified by RID = (1:106:4) id = 230524521 and indid = 5. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086750654464 owned by data record identified by RID = (1:106:5) id = 230524521 and indid = 6. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086750720000 owned by data record identified by RID = (1:106:6) id = 230524521 and indid = 7. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086750785536 owned by data record identified by RID = (1:106:7) id = 230524521 and indid = 8. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086746329088 owned by data record identified by RID = (1:106:9) id = 230653052 and indid = 2. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086746394624 owned by data record identified by RID = (1:106:10) id = 230653052 and indid = 3. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086746460160 owned by data record identified by RID = (1:106:11) id = 230653052 and indid = 4. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086746591232 owned by data record identified by RID = (1:106:13) id = 230653052 and indid = 6. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086746656768 owned by data record identified by RID = (1:106:14) id = 230653052 and indid = 7. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 1086746722304 owned by data record identified by RID = (1:106:15) id = 230653052 and indid = 8. Server: Msg 8929, Level 16, State 1, Line 1 Object ID 2: Errors found in text ID 108674678 и т.д. подбные сообщения | ||
mihalich979 7 - 07.12.20 - 11:41 | (4) никуда переходить не надо - это для архива база. Смотрят прошлые данные периодически. | ||
trdm 8 - 07.12.20 - 11:53 | |||
Злопчинский 9 - 07.12.20 - 12:06 | (8) боди-позитив! | ||
trdm 10 - 07.12.20 - 12:08 | (9) это из той же серии, что и лояльность к геям? фубля. | ||
ДенисЧ 11 - 07.12.20 - 12:42 | (10) если ты называешь их геями, то ты уже лоялен к ним ))) | ||
Андрей_Андреич 12 - 07.12.20 - 12:48 | (11) Не все в сортах афна разбираются | ||
trdm 13 - 07.12.20 - 12:56 | (11) когда уже выпустишся из детского сада? | ||
pvase 14 - 07.12.20 - 13:16 | (6) После операции, если база останется живой, попробуй снова выгрузить. Но судя по всему нужно готовиться к восстановлению из бэкапа. | ||
mihalich979 15 - 07.12.20 - 13:26 | |||
Злопчинский 16 - 07.12.20 - 13:44 | (15) ССЗБ | ||
mihalich979 17 - 07.12.20 - 14:07 | (16) не совсем ясно о чем вы.
я тут недавно работаю. разбираю то что мне оставили. вот добрался до старых баз 77. сервак наладом дышит. (диски 2008 года / райд 1) я с него все базы кроме одной выгрузил. и планирую сделать файловый вариант. для редкого обращения одного пользователя - достаточно. | ||
mihalich979 18 - 07.12.20 - 14:09 | запустил из конфигуратора - тестирование и исправление.
делаю все естественно в копии. сделал из сервака Виртальную машину (100% копию) под Hyper-V сам сервак пока не трогаю. | ||
Mikeware 19 - 07.12.20 - 14:16 | (17) чем-чем сервак дышит? | ||
mihalich979 20 - 07.12.20 - 16:08 | ну так есть у кого решение как восстановить базу?
тестирование и исправление все еще продолжается. Файл SQL - 13 гб | ||
Mikeware 21 - 07.12.20 - 16:11 | (20) из бэкапа.
есть вариант выгрузить таблицы по максимуму (что выгрузится), и загружать в чистую базу, но это решение "на любителя"... (ну, который любит "стоя на лыжах в гамаке") | ||
mihalich979 22 - 07.12.20 - 17:12 | |||
trdm 23 - 07.12.20 - 17:13 | (21) ++
Регулярный ночерный бекап +
скидывать в справочник измененные объекты и регламентом на серваке выгружаешь в джейсон или xml
+ обработка загрузки этих обжектов. | ||
mihalich979 24 - 07.12.20 - 17:15 | Тестирование и исправление не прошло:
Ошибка: SQL State: HY000 Native: 7105 Message: [Microsoft][ODBC SQL Server Driver][SQL Server]Page(1:1184708), slot 1 for text, ntext, or image node does not exist. | ||
trdm 25 - 07.12.20 - 17:15 | (20) > ну так есть у кого решение как восстановить базу?
а как восстановить, если фигический коррупт файлов в ms sql пошел. натравить сторонний парсер разве что на mfl/ldf. где-то в сети была софтина. гуглить надо. | ||
mihalich979 26 - 07.12.20 - 17:17 | я просто в SQL совсем не рублю. вот и спрашиваю. | ||
trdm 27 - 07.12.20 - 17:17 | гуглеж типа recovery ms sql data base | ||
trdm 28 - 07.12.20 - 17:19 | |||
mihalich979 29 - 07.12.20 - 17:20 | нашел какой-то двернючий бекап!
хоть бы хоть бы ..... *скрестил пальцы* завтра буду его пробовать восстановить. | ||
mihalich979 30 - 08.12.20 - 11:28 | ура!
бекап оказался жив. база в режиме 1с предприятие запустилась без ошибок сейчас сделаю выгрузку данных и переведу в файловый режим. Судя по всему сломанную базу SQL восстановить бы не получилось. Рекламное место пустует | ||
mihalich979 31 - 09.12.20 - 15:37 | Базу удалось выгрузить в файловый вариантс приключениями конечно, но получилось (файл выгрузки базы более 2гб, кто знает тот поймет). теперь новая трабла не работают отчеты. я все папки отчетов и пользователей скопировал. запускаю внешний отчет и блин ошибка в каждом что попробовал: "Значение не представляет агрегатный объект (ВыбратьСтроки)" вот напрмер: {C:\1C77BASES\PRODACTION\EXTFORMS\MYERT\БЭКОФИС\SALE2.ERT(265)}: Значение не представляет агрегатный объект (ВыбратьСтроки)кто тут по 77 есть эксперт? | ||
Mikeware 32 - 09.12.20 - 15:40 | (31) а что, для этого надо быть экспертом? | ||
ДенисЧ 33 - 09.12.20 - 15:42 | (31) 1с-спец по платформе 77 подойдёт? Или обязательно не ниже эксперта? | ||
mihalich979 34 - 09.12.20 - 15:43 | подойдет хоть дворник.
лишь бы понять что с отчетами не так. | ||
ДенисЧ 35 - 09.12.20 - 15:47 | Наверное, нужно заглянуть в файл SALE2.ERT в строку 265...
Нам отсюда не видно, мы не эксперты, и не дворники... Мы скромные специалисты... ))) | ||
mihalich979 36 - 09.12.20 - 15:53 | (35) вот что в этой строке: ВремТЗ.ВыбратьСтроки(); толку от того что тут написано не много. вопрос вот в чем а могло сломаться если из SQL в файловый перевели базу? | ||
ДенисЧ 37 - 09.12.20 - 15:54 | А откуда берётся эта ВРемТЗ?
Или мне пассатижЫ чОрные достать? | ||
mihalich979 38 - 09.12.20 - 15:56 | Перем РС; Перем ВремТЗ; Перем Таб; Перем Автр, КоличествоПоставок, СредняяПоставка; Процедура ВыводИнфы(ВремТЗ1) Далее Процедура ЗапросСПП2() Далее //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Функция ПроверкаДоступа() Если (НазваниеНабораПрав()<>"Администратор") и (ПустоеЗначение(ВыбКонтрагенты)=1) Тогда Предупреждение("Выберите контрагента!",15); Возврат 1; КонецЕсли; Если (НазваниеНабораПрав()="СтМенеджер") или (НазваниеНабораПрав()="Менеджер") Тогда СписокДоступа=СоздатьОбъект("СписокЗначений"); СпрДоп=СоздатьОбъект("Справочник.ПраваДоступа"); СпрПод=СоздатьОбъект("Справочник.ПраваПодчиненный"); Если СпрДоп.НайтиПоНаименованию(Автр)=0 Тогда Предупреждение("Доступ запрещен",5); Возврат 1; КонецЕсли; СпрПод.ИспользоватьВладельца(СпрДоп.ТекущийЭлемент()); СпрПод.ВыбратьЭлементы(); Пока СпрПод.ПолучитьЭлемент()=1 Цикл Если СпрПод.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; СписокДоступа.ДобавитьЗначение(СпрПод.Наименование); КонецЦикла; Если СписокДоступа.РазмерСписка()=0 Тогда Предупреждение("Доступ запрещен",5); Возврат 1; КонецЕсли; Эталон=""; Эталон=СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование); Если СписокДоступа.НайтиЗначение(Эталон)=0 Тогда Предупреждение("Доступ запрещен",5); Возврат 1; КонецЕсли; КонецЕсли; Возврат 0; КонецФункции //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Функция ПроверкаДоступа2() F1=0; Если (НазваниеНабораПрав()<>"Администратор") и (ПустоеЗначение(ВыбКонтрагенты)=1) Тогда Предупреждение("Выберите контрагента!",15); Возврат 1; КонецЕсли; Если НазваниеНабораПрав()="Менеджер" Тогда Если СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование)<>СокрЛП(Автр) Тогда Если (Автр="Шилякова") и ((ВыбКонтрагенты.Код="КЛ-00314") или (ВыбКонтрагенты.Код="КЛ-00358") или (ВыбКонтрагенты.Код="КЛ-00369")) или (СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование)="Шиманов") или (СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование)="Давыдова") Тогда F1=0; ИначеЕсли ((Автр="Солопов") и (ВыбКонтрагенты.Код="КЛ-00334")) Тогда F1=0; ИначеЕсли ((Автр="Шиманов") и (ВыбКонтрагенты.Код="КЛ-00488")) Тогда F1=0; Иначе Предупреждение("Клиент "+ ВыбКонтрагенты + " не ваш. | Обратитесь к руководству компании",15); F1=1; КонецЕсли; Иначе F1=0; КонецЕсли; ИначеЕсли НазваниеНабораПрав()="СтМенеджер" Тогда  //---Крючкова Если ИмяПользователя()="Крючкова" Тогда Если (СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование)="Шиманов") или (СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование)="Шилякова") или (СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование)="Крючкова") или (СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование)="Давыдова") Тогда F1=0; Иначе Предупреждение("У Вас есть доступ только к менеджеру Шиманову и Шиляковой",15); F1=1; КонецЕсли;  //---Чернышева ИначеЕсли ИмяПользователя()="Чернышева" Тогда Если (СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование)="Чернышева") или (СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование)="Андронова") или (СокрЛП(ВыбКонтрагенты.ТорговыйПредставитель.Наименование)="Давыдова") Тогда F1=0; Иначе Предупреждение("У Вас есть доступ только к менеджеру Андроновой",15); F1=1; КонецЕсли;  //---Кто-то с правами стменеджер Иначе F1=1; КонецЕсли; ИначеЕсли (НазваниеНабораПрав()="Администратор") или (НазваниеНабораПрав()="БэкОфис") Тогда F1=0; Иначе Предупреждение(Автр+ " доступ запрещен,15"); F1=1; КонецЕсли; Возврат F1; КонецФункции //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура ПриВыбореКонтрагента() F=ПроверкаДоступа(); Если F=1 Тогда Форма.Сформировать.Доступность(0); СтатусВозврата(0); Возврат; КонецЕсли; КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура ПриОткрытии() СпрПол=СоздатьОбъект("Справочник.Пользователи"); Если СпрПол.НайтиПоКоду(ИмяПользователя())=1 Тогда Автр=СпрПол.ТекущийЭлемент().Наименование; Иначе Предупреждение("Вы не зарегистрированы в системе | Обратитесь к системному администратору!"); Возврат; КонецЕсли; Общая=1; Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица");  //СпрКтр=СоздатьОбъект("Справочник.Контрагенты");  //Если СпрКтр.НайтиПоКоду("КЛ-00385",0) =1 Тогда  // ВыбКонтрагенты=СпрКтр.ТекущийЭлемент();  //КонецЕсли; НачДата=НачМесяца(ТекущаяДата()); КонДата=КонМесяца(ТекущаяДата()); КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура ЗапросСПП() //==============общие элементы======================= ВЫБРАТЬ= "SELECT " ; Артик = "Left(Спр.CODE,2) as Артикул," ; дт_дк= "CAST (LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДк," ; ИЗ_жур="FROM _1SJourn as Жур (nolock), $Справочник.Номенклатура as Спр," ; ГДЕ_дт="WHERE (Жур.IsMark =0) AND (Жур.Closed & 1 =:Заказано) AND (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) AND" ; ГРУП="GROUP BY " ; Артик_гр ="Left(Спр.CODE,2) " ; дт_дк_гр=", CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) " ; СОЕДИНИТЬ="UNION ALL |" ; //======================реализация====================== СетТочки_р="$ДокР.СетеваяТочка as [СетеваяТочка $Справочник.СетевыеТочки]," ; Товар_р="$ДокРст.Товар as [Бутерброд $Справочник.Номенклатура]," ; Кол_р="SUM($ДокРст.Количество) as Количество, 0 as КоличествоО, 0 as КоличествоВ " ; Док_р="$ДокументСтроки.Реализация as ДокРст (NOLOCK),$Документ.Реализация as ДокР (nolock) " ; ВидД_р="(Жур.IDDoc=ДокРст.IDDoc) AND (ДокР.IDDoc=ДокРст.IDDoc) AND (Жур.IDDocDef = $ВидДокумента.Реализация) AND ($ДокРст.Товар = Спр.ID)" ; Контр_р="AND ($ДокР.Контрагент = :ВыбКонтрагенты) " ; СетТ_р="AND ($ДокР.СетеваяТочка= :ВыбСетевыеТочки) " ; СетТочки_р_гр="$ДокР.СетеваяТочка," ; Товар_р_гр="$ДокРст.Товар," ; //======================обмен====================== СетТочки_б ="$ДокО.СетеваяТочка as [СетеваяТочка $Справочник.СетевыеТочки]," ; Товар_б ="$ДокОст.Товар as [Бутерброд $Справочник.Номенклатура]," ; Кол_б=" 0 as Количество, SUM($ДокОст.Количество) as КоличествоО, 0 as КоличествоВ " ; Док_б="$ДокументСтроки.Обмен as ДокОст (NOLOCK),$Документ.Обмен as ДокО (nolock) " ; ВидД_б="(Жур.IDDoc=ДокОст.IDDoc) AND (ДокО.IDDoc=ДокОст.IDDoc) AND (Жур.IDDocDef = $ВидДокумента.Обмен) AND ($ДокОст.Товар = Спр.ID) " ; Контр_б="AND ($ДокО.Контрагент = :ВыбКонтрагенты) " ; СетТ_б="AND ($ДокО.СетеваяТочка= :ВыбСетевыеТочки) " ; СетТочки_б_гр="$ДокО.СетеваяТочка," ; Товар_б_гр="$ДокОст.Товар," ; //======================возврат====================== СетТочки_в="$ДокВ.СетеваяТочка as [СетеваяТочка $Справочник.СетевыеТочки]," ; Товар_в="$ДокВст.Товар as [Бутерброд $Справочник.Номенклатура]," ; Кол_в="0 as Количество,0 as КоличествоО,SUM($ДокВст.Количество) as КоличествоВ " ; Док_в=" $ДокументСтроки.ВозвратОтПокупателя as ДокВст (NOLOCK),$Документ.ВозвратОтПокупателя as ДокВ (nolock) " ; ВидД_в="(Жур.IDDoc=ДокВст.IDDoc) AND (ДокВ.IDDoc=ДокВст.IDDoc) AND (Жур.IDDocDef = $ВидДокумента.ВозвратОтПокупателя) AND ($ДокВст.Товар = Спр.ID)" ; Контр_в="AND ($ДокВ.Контрагент = :ВыбКонтрагенты) " ; СетТ_в="AND ($ДокВ.СетеваяТочка= :ВыбСетевыеТочки) " ; СетТочки_в_гр="$ДокВ.СетеваяТочка," ; Товар_в_гр="$ДокВст.Товар," ; //============================= РС=СоздатьОбъект("ODBCRecordSet");  //РС.Отладка(1); Зкз=?((Заказано-1)<0,1,0); РС.УстБД1С(); РС.УстановитьТекстовыйПараметр("Заказано", Зкз); РС.УстановитьТекстовыйПараметр("НачДата", НачДата); РС.УстановитьТекстовыйПараметр("КонДата",КонДата); //СетТочки_р Товар_р Кол_р Док_р ВидД_р Контр_р СетТ_р СетТочки_р_гр Товар_р_гр Если ВесьПериод=1 Тогда дт_дк=""; дт_дк_гр=""; КонецЕсли; Если ПустоеЗначение(ВыбКонтрагенты)=0 Тогда РС.УстановитьТекстовыйПараметр("ВыбКонтрагенты",ВыбКонтрагенты); Если ПустоеЗначение(ВыбСетевыеТочки)=0 Тогда РС.УстановитьТекстовыйПараметр("ВыбСетевыеТочки",ВыбСетевыеТочки); СетТочки_р=""; СетТочки_р_гр=""; СетТочки_б=""; СетТочки_б_гр=""; СетТочки_в=""; СетТочки_в_гр=""; Иначе//по всем точкам СетТ_р=""; СетТ_б=""; СетТ_в=""; КонецЕсли; Иначе Контр_р=""; Контр_б=""; Контр_в=""; СетТ_р=""; СетТ_б=""; СетТ_в=""; КонецЕсли; ТекстЗапроса00 = ВЫБРАТЬ+" |"+ СетТочки_р+Товар_р +Артик+дт_дк +Кол_р +" |"+ ИЗ_жур+Док_р +" |"+ ГДЕ_дт +ВидД_р +Контр_р+СетТ_р+" |"+ ГРУП+" |"+ СетТочки_р_гр+Товар_р_гр+Артик_гр+дт_дк_гр + " |"+ СОЕДИНИТЬ+" |"+ ВЫБРАТЬ+" |"+ СетТочки_б+Товар_б +Артик+дт_дк +Кол_б + " |"+ ИЗ_жур+Док_б +" |"+ ГДЕ_дт +ВидД_б +Контр_б+СетТ_б+" |"+ ГРУП+ " |"+ СетТочки_б_гр+Товар_б_гр+Артик_гр+дт_дк_гр + " |"+ СОЕДИНИТЬ+" |"+ ВЫБРАТЬ+" |"+ СетТочки_в+Товар_в +Артик+дт_дк +Кол_в +" |"+ ИЗ_жур+Док_в +" |"+ ГДЕ_дт +ВидД_в +Контр_в+ СетТ_в+" |"+ ГРУП+ " |"+ СетТочки_в_гр+Товар_в_гр+Артик_гр+дт_дк_гр; ВремТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса00); Если ВесьПериод=1 Тогда Если ПустоеЗначение(ВыбСетевыеТочки)=0 Тогда НомКолонки=3; Иначе НомКолонки=4; КонецЕсли; ВремТЗ.ВставитьКолонку("ДатаДк",НомКолонки,,,,,,,); ВремТЗ.ВыбратьСтроки(); Пока ВремТЗ.ПолучитьСтроку()=1 Цикл ВремТЗ.ДатаДк=КонДата; КонецЦикла; КонецЕсли; Если (ПустоеЗначение(ВыбКонтрагенты)=0) и (ПустоеЗначение(ВыбСетевыеТочки)=1) Тогда ВремТЗ.Сортировать("СетеваяТочка, ДатаДк"); КонецЕсли; ВремТЗ.ВыбратьСтроки(); Пока ВремТЗ.ПолучитьСтроку()=1 Цикл ВремТЗ.Количество=ВремТЗ.Количество+ВремТЗ.КоличествоО; ВремТЗ.КоличествоВ=ВремТЗ.КоличествоВ+ВремТЗ.КоличествоО; Если (ВремТЗ.Артикул="БЧ") или (ВремТЗ.Артикул="ББ") Тогда ВремТЗ.Артикул="Бутерброды"; ИначеЕсли ВремТЗ.Артикул="СЛ" Тогда ВремТЗ.Артикул="Салаты"; ИначеЕсли ВремТЗ.Артикул="СК" Тогда ВремТЗ.Артикул="Соки"; КонецЕсли; КонецЦикла; КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Функция Колонка(N); Колонка="_"+СокрЛП(Строка(N)); Возврат Колонка; КонецФункции //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура СозданиеКолонок(Т0,Счетчик) Для i=1 По Счетчик Цикл Т0.НоваяКолонка(Колонка(i),"Число"); КонецЦикла; КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Функция ПроценВозврата(N,L) Если L>0 Тогда Если N>0 Тогда Процент=Окр((L*100)/N,0); Иначе Процент=100; КонецЕсли; Иначе Процент=0; КонецЕсли; Возврат Процент; КонецФункции //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура Шапка(N,Т1) Таб.ВывестиСекцию("2|в01"); Если ВесьПериод=0 Тогда Для i=1 По N Цикл Если Цел(i/2)<>i/2 Тогда Продолжить; КонецЕсли; Дата01=Т1.ПолучитьЗначение(i/2,"ДатаДк"); Таб.ПрисоединитьСекцию("2|в02"); КонецЦикла; КонецЕсли; Таб.ПрисоединитьСекцию("2|в03"); Если ВесьПериод=0 Тогда Таб.ПрисоединитьСекцию("2|в04"); КонецЕсли; КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Функция Секция(S,Pr) S=?(Pr>10,S+"а",S); Возврат S КонецФункции //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура Тело(Т3) N=Т3.КоличествоКолонок()-4; Колонка01=Колонка((Т3.КоличествоКолонок()-3)); Колонка02=Колонка((Т3.КоличествоКолонок()-2)); Колонка03=Колонка((Т3.КоличествоКолонок()-1)); ИтВсОтгр=Т3.Итог(Колонка01); ИтВсВоз=Т3.Итог(Колонка02); ИтПроц =ПроценВозврата(ИтВсОтгр,ИтВсВоз); ИтВсПрод=ИтВсОтгр-ИтВсВоз; Т3.ВыбратьСтроки() ; ВсегоКоличествоПоставок=0; Пока Т3.ПолучитьСтроку()=1 Цикл Ном=Т3.НомерСтроки; Название=Т3.ПолучитьЗначение(Ном,1); ВсОтгр=Т3.ПолучитьЗначение(Ном,Колонка01); ВсВоз=Т3.ПолучитьЗначение(Ном,Колонка02); ВсПрод=ВсОтгр-ВсВоз; Проц=Т3.ПолучитьЗначение(Ном,Колонка03); Sec=Секция("3",Проц) ; Таб.ВывестиСекцию(Sec+"|в01"); КоличествоПоставок=0; Если ВесьПериод=0 Тогда Для i=1 По N Цикл Если Цел(i/2)<>i/2 Тогда Продолжить; КонецЕсли; Колонка04=Колонка(i-1); Колонка05=Колонка(i); Отгр=Т3.ПолучитьЗначение(Ном,Колонка04); Если Отгр>0 Тогда КоличествоПоставок=КоличествоПоставок+1; КонецЕсли; Возв=Т3.ПолучитьЗначение(Ном,Колонка05); Таб.ПрисоединитьСекцию(Sec+"|в02"); КонецЦикла; КонецЕсли; СредняяПоставка=0; Если КоличествоПоставок>0 Тогда ВсегоКоличествоПоставок=ВсегоКоличествоПоставок+КоличествоПоставок; СредняяПоставка=Окр(ВсПрод/КоличествоПоставок,0) КонецЕсли; Таб.ПрисоединитьСекцию(Sec+"|в03"); Если ВесьПериод=0 Тогда Таб.ПрисоединитьСекцию(Sec+"|в04"); КонецЕсли; КонецЦикла; //===итоги=========================== Sec=Секция("4",ИтПроц) ; Таб.ВывестиСекцию(Sec+"|в01"); Если ВесьПериод=0 Тогда Для i=1 По N Цикл Если Цел(i/2)<>i/2 Тогда Продолжить; КонецЕсли; Колонка04=Колонка(i-1); Колонка05=Колонка(i); ИтОтгр=Т3.Итог(Колонка04); ИтВозв=Т3.Итог(Колонка05); Таб.ПрисоединитьСекцию(Sec+"|в02"); КонецЦикла; КонецЕсли; Таб.ПрисоединитьСекцию(Sec+"|в03"); Если ВесьПериод=0 Тогда Таб.ПрисоединитьСекцию(Sec+"|в04"); КонецЕсли; КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура СверткаПоБутерам(ТБТ) Спр=СоздатьОбъект("Справочник.Номенклатура"); ТБТ.НоваяКолонка("Код"); ТБТ.ВыбратьСтроки(); Пока ТБТ.ПолучитьСтроку()=1 Цикл ТБТ.Код=СокрЛП(ТБТ.Бутерброд.Код); Если (Лев(ТБТ.Код,2)="ББ") или (Лев(ТБТ.Код,2)="БЧ")Тогда ТБТ.Код=Прав(СокрЛП(ТБТ.Код),5); Если Лев(ТБТ.Код,2)="СМ" Тогда ТБТ.Код="СТ."+Прав(СокрЛП(ТБТ.Код),2); КонецЕсли; КонецЕсли; КонецЦикла; Свертка=""; Для i=1 По ТБТ.КоличествоКолонок()-2 Цикл Если i=1 Тогда Свертка=Колонка(i); Иначе Свертка=Свертка+","+Колонка(i); КонецЕсли; КонецЦикла; ТБТ.Свернуть("Код",Свертка); ТБТ.ВставитьКолонку("Бутерброд",1,,,,,,,); ТБТ.ВыбратьСтроки(); Пока ТБТ.ПолучитьСтроку()=1 Цикл Если Спр.НайтиПоКоду("БЧ."+ТБТ.Код,0)=1 Тогда ТБТ.Бутерброд=СтрЗаменить(СокрЛП(Строка(Спр.ТекущийЭлемент())),"Чер."," "); ИначеЕсли Спр.НайтиПоКоду("ББ."+ТБТ.Код,0)=1 Тогда ТБТ.Бутерброд=СтрЗаменить(СокрЛП(Строка(Спр.ТекущийЭлемент())),"Бел."," "); ИначеЕсли Спр.НайтиПоКоду(ТБТ.Код,0)=1 Тогда ТБТ.Бутерброд=СокрЛП(Строка(Спр.ТекущийЭлемент())); КонецЕсли; Колонка01=Колонка((ТБТ.КоличествоКолонок()-2)); Колонка02=Колонка((ТБТ.КоличествоКолонок()-3)); Колонка03=Колонка((ТБТ.КоличествоКолонок()-4)); ТБТ.УстановитьЗначение(ТБТ.НомерСтроки,Колонка01,ПроценВозврата(ТБТ.ПолучитьЗначение(ТБТ.НомерСтроки,Колонка03),ТБТ.ПолучитьЗначение(ТБТ.НомерСтроки,Колонка02))); КонецЦикла; ТБТ.УдалитьКолонку("Код"); ТБТ.Сортировать("Бутерброд"); КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура Макет(N, Флаг,ТЗ_4) ТЗ_0=СоздатьОбъект("ТаблицаЗначений"); ТЗ_1=СоздатьОбъект("ТаблицаЗначений"); ТЗ_2=СоздатьОбъект("ТаблицаЗначений"); ТЗ_3=СоздатьОбъект("ТаблицаЗначений"); ТЗ_4.Выгрузить(ТЗ_0); ТЗ_4.Выгрузить(ТЗ_1); ТЗ_4.Выгрузить(ТЗ_2); ТЗ_0.Свернуть(N,"Количество,КоличествоВ"); ТЗ_0.Выгрузить(ТЗ_3,,,1); ТЗ_3.Сортировать("1"); ТЗ_1.Свернуть("ДатаДк","Количество, КоличествоВ"); ТЗ_1.Сортировать("ДатаДк"); ТЗ_2.Свернуть(СокрЛП(Строка(N))+", ДатаДк","Количество, КоличествоВ"); ТЗ_2.Сортировать("1, ДатаДк"); КолКолонок=ТЗ_1.КоличествоСтрок()*2+3; СозданиеКолонок(ТЗ_3,КолКолонок); ТЗ_2.ВыбратьСтроки(); Пока ТЗ_2.ПолучитьСтроку()=1 Цикл Стр=""; Поиск= ТЗ_2.ПолучитьЗначение(ТЗ_2.НомерСтроки,1); Если ТЗ_3.НайтиЗначение(Поиск,Стр,1)=1 Тогда Стр2=""; Если ТЗ_1.НайтиЗначение(ТЗ_2.ДатаДк,Стр2,"ДатаДк")=1 Тогда Колонка01=Колонка((Стр2*2)-1); Колонка02=Колонка(Стр2*2); ТЗ_3.УстановитьЗначение(Стр,Колонка01,ТЗ_2.Количество); ТЗ_3.УстановитьЗначение(Стр,Колонка02,ТЗ_2.КоличествоВ); КонецЕсли; КонецЕсли; КонецЦикла;  //========= и т о г и в к о н ц е т а б л иц ы========== ТЗ_0.ВыбратьСтроки(); Пока ТЗ_0.ПолучитьСтроку()=1 Цикл Стр=""; Поиск= ТЗ_0.ПолучитьЗначение(ТЗ_0.НомерСтроки,1); Если ТЗ_3.НайтиЗначение(Поиск,Стр,1)=1 Тогда Колонка01=Колонка((ТЗ_3.КоличествоКолонок()-3)); Колонка02=Колонка((ТЗ_3.КоличествоКолонок()-2)); Колонка03=Колонка((ТЗ_3.КоличествоКолонок()-1)); ТЗ_3.УстановитьЗначение(Стр,Колонка01,ТЗ_0.Количество); ТЗ_3.УстановитьЗначение(Стр,Колонка02,ТЗ_0.КоличествоВ); ТЗ_3.УстановитьЗначение(Стр,Колонка03,ПроценВозврата(ТЗ_0.Количество,ТЗ_0.КоличествоВ)); КонецЕсли; КонецЦикла;  //========= б е з х л е б а ======================== Если (БезХлеба=1) и (Флаг=1) Тогда СверткаПоБутерам(ТЗ_3); КонецЕсли;  //============================================== Шапка(ТЗ_3.КоличествоКолонок()-4,ТЗ_1); Тело(ТЗ_3); КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура ПоСТ() Т0=СоздатьОбъект("ТаблицаЗначений"); ВремТЗ.Выгрузить(Т0); Т0.Свернуть("СетеваяТочка","Количество,КоличествоВ"); Т0.Сортировать("СетеваяТочка"); ВремТЗ.Сортировать("СетеваяТочка"); Т0.ВыбратьСтроки(); Пока Т0.ПолучитьСтроку()=1 Цикл Первое=0; Последнее=0; Т1=СоздатьОбъект("ТаблицаЗначений");  //найдем первое совпадение ВремТЗ.ВыбратьСтроки(); Пока ВремТЗ.ПолучитьСтроку()=1 Цикл Если (Т0.СетеваяТочка=ВремТЗ.СетеваяТочка) и (Первое=0) Тогда Первое=ВремТЗ.НомерСтроки; ИначеЕсли (Т0.СетеваяТочка=ВремТЗ.СетеваяТочка) и (Первое<>0) Тогда Последнее=ВремТЗ.НомерСтроки; КонецЕсли; Если Последнее=0 Тогда Последнее=Первое; КонецЕсли; КонецЦикла; ВремТЗ.Выгрузить(Т1,Первое,Последнее,); Наименование=СокрЛП(Строка(Т0.СетеваяТочка))+" "+СокрЛП(Строка(Т0.СетеваяТочка.ПочтовыйАдрес)); Если ПоПродукции=1 Тогда Иначе Таб.ВывестиСекцию("5"); Макет(2,1,Т1); КонецЕсли; Наименование="Сводные итоги по продукции ("+СокрЛП(Строка(Наименование))+")"; Таб.ВывестиСекцию("5"); Макет(3,0,Т1); КонецЦикла; КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура Сборка() F=ПроверкаДоступа(); Если F=1 Тогда Форма.Сформировать.Доступность(0); СтатусВозврата(0); Возврат; КонецЕсли; Если ((Общая=0) и (СетТоч=0)) или (ПустоеЗначение(ВыбКонтрагенты)=1) Тогда Предупреждение("Не понятно, что нужно?"); Возврат; КонецЕсли; If ПоПродукции=0 Then Таб.ВывестиСекцию("1"); ЗапросСПП(); Если Общая=1 Тогда Если (ПустоеЗначение(ВыбКонтрагенты)=0) и (ПустоеЗначение(ВыбСетевыеТочки)=1) Тогда Макет(1,0,ВремТЗ); Макет(2,1,ВремТЗ); Макет(3,0,ВремТЗ); Иначе СетТоч=0; Макет(1,1,ВремТЗ); Макет(2,0,ВремТЗ); КонецЕсли; КонецЕсли;  //=== по сетевым точкам === Если СетТоч=1 Тогда ПоСТ(); КонецЕсли; Таб.ПараметрыСтраницы(2,,,5,5,5,5,0,0,1,,); Таб.Опции(0,0,5,2,); Таб.Показать(); Else ЗапросСПП2(); EndIf; КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура ЗапросСПП2() РС=СоздатьОбъект("ODBCRecordSet"); РС.УстБД1С(); РС.УстановитьТекстовыйПараметр("НачДата", НачДата); РС.УстановитьТекстовыйПараметр("КонДата",КонДата); РС.УстановитьТекстовыйПараметр("ВыбКонтрагенты",ВыбКонтрагенты); Если (ВыбКонтрагенты.Код="КЛ-00663") ИЛИ (ВыбКонтрагенты.Код="КЛ-10106") Тогда ТекстЗапроса00 =" |SELECT |$ДокР.СетеваяТочка as [СетеваяТочка $Справочник.СетевыеТочки], |$Спр.ТипПродукции as [ТипТовара $Перечисление.ТипПродукции], |CAST (LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДк, |SUM($ДокРст.Количество) as Количество, |0 as КоличествоВ |FROM _1SJourn as Жур (nolock), $Справочник.Номенклатура as Спр, |$ДокументСтроки.Реализация as ДокРст (NOLOCK),$Документ.Реализация as ДокР (nolock) |WHERE |(Жур.IsMark =0) |AND (Жур.Closed & 1 =1) |AND (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) |AND (Жур.IDDoc=ДокРст.IDDoc) AND (ДокР.IDDoc=ДокРст.IDDoc) |AND (Жур.IDDocDef = $ВидДокумента.Реализация) AND ($ДокРст.Товар = Спр.ID) |AND ($ДокР.Контрагент = :ВыбКонтрагенты) |GROUP BY |CAST (LEFT(Жур.Date_Time_IDDoc, 8) as DateTime), |$ДокР.СетеваяТочка, |$Спр.ТипПродукции |"; ВремТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса00); //определим возвраты по раменке ПродажиБПСС РС.УстановитьТекстовыйПараметр("НачДата",НачМесяца(НачДата)); РС.УстановитьТекстовыйПараметр("КонДата",КонДата); РС.УстановитьТекстовыйПараметр("ВыбКонтрагенты",ВыбКонтрагенты); ТекстЗапроса3 = " |SELECT | Max(CAST (LEFT(Жур.Date_Time_IDDoc, 8) as DateTime)) as ДатаДк |FROM | $Документ.ПродажиБПСС as ДокР (nolock), | _1SJourn as Жур (nolock) |WHERE | (Жур.IDDoc=ДокР.IDDoc) AND | (Жур.IDDocDef = $ВидДокумента.ПродажиБПСС) AND | (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) AND | ($ДокР.Контрагент = :ВыбКонтрагенты) |"; Врем02= РС.ВыполнитьИнструкцию(ТекстЗапроса3); Если Врем02.КоличествоСтрок()>0 Тогда Врем02.Сортировать("ДатаДк-"); ВозвратыНаДату=Врем02.ПолучитьЗначение(1,"ДатаДк"); //определим количество отгруженных на эту дату и количество проданых РС.УстановитьТекстовыйПараметр("НачДата", НачДата); РС.УстановитьТекстовыйПараметр("КонДата",ВозвратыНаДату); РС.УстановитьТекстовыйПараметр("ВыбКонтрагенты",ВыбКонтрагенты); ТекстЗапроса3 =" |SELECT |$ДокР.СетеваяТочка as [СетеваяТочка $Справочник.СетевыеТочки], |$Спр.ТипПродукции as [ТипТовара $Перечисление.ТипПродукции], |SUM($ДокРст.Количество) as Количество, |0 as КоличествоП |FROM _1SJourn as Жур (nolock), $Справочник.Номенклатура as Спр, |$ДокументСтроки.Реализация as ДокРст (NOLOCK),$Документ.Реализация as ДокР (nolock) |WHERE |(Жур.IsMark =0) |AND (Жур.Closed & 1 =1) |AND (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) |AND (Жур.IDDoc=ДокРст.IDDoc) AND (ДокР.IDDoc=ДокРст.IDDoc) |AND (Жур.IDDocDef = $ВидДокумента.Реализация) |AND ($ДокРст.Товар = Спр.ID) |AND ($ДокР.Контрагент = :ВыбКонтрагенты) |GROUP BY |$ДокР.СетеваяТочка, |$Спр.ТипПродукции | |UNION ALL | |SELECT |$ДокБ.СетеваяТочка as [СетеваяТочка $Справочник.СетевыеТочки], |$Спр.ТипПродукции as [ТипТовара $Перечисление.ТипПродукции], |0 as Количество, |SUM($ДокБст.Количество) as КоличествоП |FROM _1SJourn as Жур (nolock), $Справочник.Номенклатура as Спр, |$ДокументСтроки.ПродажиБПСС as ДокБст (NOLOCK),$Документ.ПродажиБПСС as ДокБ (nolock) |WHERE |(Жур.IsMark =0) |AND (Жур.Closed & 1 =1) |AND (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) |AND (Жур.IDDoc=ДокБст.IDDoc) |AND (ДокБ.IDDoc=ДокБст.IDDoc) |AND (Жур.IDDocDef = $ВидДокумента.ПродажиБПСС) |AND ($ДокБст.Товар = Спр.ID) |AND ($ДокБ.Контрагент = :ВыбКонтрагенты) |GROUP BY |$ДокБ.СетеваяТочка, |$Спр.ТипПродукции |"; Врем01= РС.ВыполнитьИнструкцию(ТекстЗапроса3); Врем01.Свернуть("СетеваяТочка,ТипТовара","Количество,КоличествоП"); Врем01.НоваяКолонка("КоличествоВ","Число"); Врем01.ВыбратьСтроки(); Пока Врем01.ПолучитьСтроку()=1 Цикл Врем01.КоличествоВ=?((Врем01.Количество-Врем01.КоличествоП)>0,(Врем01.Количество-Врем01.КоличествоП),0); КонецЦикла; Врем01.ВыбратьСтроки(); Пока Врем01.ПолучитьСтроку()=1 Цикл ВремТЗ.НоваяСтрока(); ВремТЗ.СетеваяТочка=Врем01.СетеваяТочка; ВремТЗ.ТипТовара=Врем01.ТипТовара; ВремТЗ.КоличествоВ=Врем01.КоличествоВ; ВремТЗ.ДатаДк=КонДата; КонецЦикла; Иначе ТекстЗапроса00 =" |SELECT |$ДокР.СетеваяТочка as [СетеваяТочка $Справочник.СетевыеТочки], |$Спр.ТипПродукции as [ТипТовара $Перечисление.ТипПродукции], |CAST (LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДк, |SUM($ДокРст.Количество) as Количество, |0 as КоличествоВ |FROM _1SJourn as Жур (nolock), $Справочник.Номенклатура as Спр, |$ДокументСтроки.Реализация as ДокРст (NOLOCK),$Документ.Реализация as ДокР (nolock) |WHERE |(Жур.IsMark =0) |AND (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) |AND (Жур.Closed & 1 =1) |AND (Жур.IDDoc=ДокРст.IDDoc) AND (ДокР.IDDoc=ДокРст.IDDoc) |AND (Жур.IDDocDef = $ВидДокумента.Реализация) |AND ($ДокРст.Товар = Спр.ID) |AND ($ДокР.Контрагент = :ВыбКонтрагенты) |GROUP BY |CAST (LEFT(Жур.Date_Time_IDDoc, 8) as DateTime), |$ДокР.СетеваяТочка, |$Спр.ТипПродукции | |UNION ALL | |SELECT |$ДокВ.СетеваяТочка as [СетеваяТочка $Справочник.СетевыеТочки], |$Спр.ТипПродукции as [ТипТовара $Перечисление.ТипПродукции], |CAST (LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДк, |0 as КоличествоВ, |SUM($ДокВст.Количество) as Количество |FROM _1SJourn as Жур (nolock), $Справочник.Номенклатура as Спр, |$ДокументСтроки.ВозвратОтПокупателя as ДокВст (NOLOCK),$Документ.ВозвратОтПокупателя as ДокВ (nolock) |WHERE |(Жур.IsMark =0) |AND (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) |AND (Жур.Closed & 1 =1) |AND (Жур.IDDoc=ДокВст.IDDoc) AND (ДокВ.IDDoc=ДокВст.IDDoc) |AND (Жур.IDDocDef = $ВидДокумента.ВозвратОтПокупателя) |AND ($ДокВст.Товар = Спр.ID) |AND ($ДокВ.Контрагент = :ВыбКонтрагенты) |GROUP BY |CAST (LEFT(Жур.Date_Time_IDDoc, 8) as DateTime), |$ДокВ.СетеваяТочка, |$Спр.ТипПродукции | |";  //РС.Отладка(1); ВремТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса00); КонецЕсли; КонецЕсли; ВремТЗ.Свернуть("СетеваяТочка, ТипТовара,ДатаДк","Количество,КоличествоВ"); ВремТЗ.Сортировать("СетеваяТочка, ДатаДк"); СписТип=СоздатьОбъект("ТаблицаЗначений"); ВремТЗ.Выгрузить(СписТип); СписТип.Свернуть("ТипТовара","Количество"); СписТип.ВыбратьСтроку(); ВремТЗ2=СоздатьОбъект("ТаблицаЗначений"); ВремТЗ.Выгрузить(ВремТЗ2); ВремТЗ2.Свернуть("СетеваяТочка ,ДатаДк","Количество,КоличествоВ"); ВыбТип="Общий"; ВыводИнфы(ВремТЗ2); СписТип.ВыбратьСтроки(); Пока СписТип.ПолучитьСтроку()=1 Цикл ВремТЗ2.УдалитьСтроки(); ВремТЗ.ВыбратьСтроки(); Пока ВремТЗ.ПолучитьСтроку()=1 Цикл Если ВремТЗ.ТипТовара=СписТип.ТипТовара Тогда ВремТЗ2.НоваяСтрока(); ВремТЗ2.СетеваяТочка =ВремТЗ.СетеваяТочка; ВремТЗ2.ДатаДк =ВремТЗ.ДатаДк; ВремТЗ2.Количество= ВремТЗ.Количество; ВремТЗ2.КоличествоВ =ВремТЗ.КоличествоВ; КонецЕсли; КонецЦикла; ВыбТип=СписТип.ТипТовара; ВыводИнфы(ВремТЗ2); КонецЦикла; КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Процедура ВыводИнфы(ВремТЗ1) СписДатаДк=СоздатьОбъект("ТаблицаЗначений"); СписСт=СоздатьОбъект("ТаблицаЗначений"); ВремТЗ1.Выгрузить(СписДатаДк); ВремТЗ1.Выгрузить(СписСт); СписДатаДк.Свернуть("ДатаДк","Количество"); СписСт.Свернуть("СетеваяТочка","Количество"); ТВ=СоздатьОбъект("ТаблицаЗначений"); ТВ.НоваяКолонка("СетеваяТочка"); ТВ.НоваяКолонка("ТипТовара"); СписСт.ВыбратьСтроки(); Пока СписСт.ПолучитьСтроку()=1 Цикл ТВ.НоваяСтрока(); ТВ.СетеваяТочка=СписСт.СетеваяТочка; КонецЦикла; Для i=1 По СписДатаДк.КоличествоСтрок() Цикл ТВ.НоваяКолонка("_"+СокрЛП(Строка(i*2)),"Число"); ТВ.НоваяКолонка("_"+СокрЛП(Строка(i*2+1)),"Число"); КонецЦикла; ТВ.НоваяКолонка("ВсОт","Число"); ТВ.НоваяКолонка("ВсВз","Число"); ТВ.НоваяКолонка("Прод","Число"); ТВ.НоваяКолонка("Проц","Число"); ТВ.НоваяКолонка("КолПост","Число");ТВ.НоваяКолонка("КолВоз","Числ | ||
mihalich979 39 - 09.12.20 - 15:56 | ТВ.НоваяКолонка("СредПос","Число"); ВремТЗ1.ВыбратьСтроки(); Пока ВремТЗ1.ПолучитьСтроку()=1 Цикл _стр=""; If СписСт.НайтиЗначение(ВремТЗ1.СетеваяТочка,_стр, "СетеваяТочка")=1 Then _кол=""; If СписДатаДк.НайтиЗначение(ВремТЗ1.ДатаДк,_кол, "ДатаДк")=1 Then _кол1="_"+СокрЛП(Строка(_кол*2)); _кол2="_"+СокрЛП(Строка(_кол*2+1)); ТВ.УстановитьЗначение(_стр,_кол1,ВремТЗ1.Количество); ТВ.УстановитьЗначение(_стр,_кол2,ВремТЗ1.КоличествоВ); EndIf; EndIf; КонецЦикла; ТВ.ВыбратьСтроки(); Пока ТВ.ПолучитьСтроку()=1 Цикл ВсОт=0; ВсВз=0; Прод=0; Проц=0; КолПост=0; КолВоз=0; СредПос=0; КолКл=ТВ.КоличествоКолонок()-7; Для i=3 По КолКл Цикл зн=ТВ.ПолучитьЗначение(ТВ.НОмерСтроки,i); If зн>0 Then If (i/2)=Цел(i/2) Then ВсВз=ВсВз+зн; КолВоз=КолВоз+1; Else ВсОт=ВсОт+зн; КолПост=КолПост+1; EndIf; EndIf; КонецЦикла; Прод=ВсОт-ВсВз; Прод=?(Прод<0,0,Прод); Проц=ПроценВозврата(ВсОт,ВсВз); If КолПост>0 Then СредПос=Окр(ВсОт/КолПост,0); EndIf; ТВ.УстановитьЗначение(ТВ.НОмерСтроки,"ВсОт",ВсОт); ТВ.УстановитьЗначение(ТВ.НОмерСтроки,"ВсВз",ВсВз); ТВ.УстановитьЗначение(ТВ.НОмерСтроки,"Прод",Прод); ТВ.УстановитьЗначение(ТВ.НОмерСтроки,"Проц",Проц); ТВ.УстановитьЗначение(ТВ.НОмерСтроки,"КолПост",КолПост); ТВ.УстановитьЗначение(ТВ.НОмерСтроки,"КолВоз",КолВоз); ТВ.УстановитьЗначение(ТВ.НОмерСтроки,"СредПос",СредПос); КонецЦикла; Таб.ВывестиСекцию("1"); Таб.ВывестиСекцию("2|в01"); СписДатаДк.ВыбратьСтроки(); If ВесьПериод=0 Then Пока СписДатаДк.ПолучитьСтроку()=1 Цикл Дата01=СписДатаДк.ДатаДк; Таб.ПрисоединитьСекцию("2|в02"); КонецЦикла; EndIf; Таб.ПрисоединитьСекцию("2|в03"); Таб.ПрисоединитьСекцию("2|в04"); ТВ.ВыбратьСтроки(); Пока ТВ.ПолучитьСтроку()=1 Цикл Ном=ТВ.НомерСтроки; Название=ТВ.СетеваяТочка; КолКл=ТВ.КоличествоКолонок()-7; Проц= ТВ.ПолучитьЗначение(ТВ.НОмерСтроки,КолКл+4); Если Проц<11 Тогда Сек="3"; Иначе Сек="3а"; КонецЕсли; Таб.ВывестиСекцию(Сек+"|в01"); If ВесьПериод=0 Then Для i=3 По КолКл Цикл зн=ТВ.ПолучитьЗначение(ТВ.НОмерСтроки,i); If (i/2)=Цел(i/2) Then Возв=зн; Таб.ПрисоединитьСекцию(Сек+"|в02"); Else Отгр=зн; EndIf; КонецЦикла; EndIf; ВсОтгр=ТВ.ПолучитьЗначение(ТВ.НОмерСтроки,КолКл+1); ВсВоз=ТВ.ПолучитьЗначение(ТВ.НОмерСтроки,КолКл+2); ВсПрод=ТВ.ПолучитьЗначение(ТВ.НОмерСтроки,КолКл+3); Таб.ПрисоединитьСекцию(Сек+"|в03"); КоличествоПоставок= ТВ.ПолучитьЗначение(ТВ.НОмерСтроки,КолКл+5); КоличествоВозвратов=ТВ.ПолучитьЗначение(ТВ.НОмерСтроки,КолКл+6); СредняяПоставка=ТВ.ПолучитьЗначение(ТВ.НОмерСтроки,КолКл+7); Таб.ПрисоединитьСекцию(Сек+"|в04"); КонецЦикла; ПосдлСтр=ТВ.КоличествоСтрок(); ИтВсВоз=ТВ.Итог("ВсВз"); ИтВсОтгр=ТВ.Итог("ВсОт"); ИтВсПрод=ТВ.Итог("Прод"); ИтПроц=ПроценВозврата(ИтВсОтгр,ИтВсВоз); ВсегоКоличествоПоставок=ТВ.Итог("КолПост"); ВсегоКоличествоВозвратов=ТВ.Итог("КолВоз"); Если ИтПроц<11 Тогда Сек="4"; Иначе Сек="4а"; КонецЕсли; Таб.ВывестиСекцию(Сек+"|в01"); If ВесьПериод=0 Then Для i=3 По КолКл Цикл зн=ТВ.Итог(i); If (i/2)=Цел(i/2) Then ИтВозв=зн; Таб.ПрисоединитьСекцию(Сек+"|в02"); Else ИтОтгр=зн; EndIf; КонецЦикла; EndIf; Таб.ПрисоединитьСекцию(Сек+"|в03"); Таб.ПрисоединитьСекцию(Сек+"|в04"); Таб.ПараметрыСтраницы(2,,,5,5,5,5,0,0,1,,); Таб.Опции(0,0,6,2,); Таб.Показать(); КонецПроцедуры //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | ||
mihalich979 40 - 09.12.20 - 15:57 | вот весь модуль | ||
ДенисЧ 41 - 09.12.20 - 15:58 | Так и сказал бы сразу, что у тебя прямые запросы.
В файловой и серверной они по-разному пишутся. И так просто, выгрузкой они не переносятся | ||
mihalich979 42 - 09.12.20 - 16:00 | (41) а-хахах
я и не знал, а так бы сразу сказал. можете подсказать что где поправить ? или тут дофига переписывать? | ||
ДенисЧ 43 - 09.12.20 - 16:00 | Вот тут пас. Я прямые запросы в файловой не использовал | ||
mihalich979 44 - 09.12.20 - 16:02 | |||
ДенисЧ 45 - 09.12.20 - 16:03 | (44) Можно рискнуть и поискать того, кто такое делал... Тут такие есть... МОжет, проявятся. | ||
mihalich979 46 - 09.12.20 - 16:06 | (45) это 100% нет даже 10000%
там какая-то плохая ситуация случилась, плохо расстались. ушел никому ничего не передав и не рассказав. и сим-карту выкинул. | ||
ДенисЧ 47 - 09.12.20 - 16:14 | (46) Я имею в виду не автора. А людей, которые работали с прямыми запросами в 77.
Такие точно есть )) | ||
Mihenius 48 - 09.12.20 - 16:21 | По памяти нужно исправить работу с журналом, хранением дат, пометкой удаления но во всех местах где это встречается
Когда-то давным давно что-то такое делал ) Если ФС.СуществуетФайл(КаталогИБ()+"1cv7.dds")=1 Тогда//скуль ЭтоСКЛ=1; ИначеЕсли ФС.СуществуетФайл(КаталогИБ()+"1cv7.dd")=1 Тогда//дбф ЭтоСКЛ=0; КонецЕсли; Если ЭтоСКЛ=0 Тогда ТекстЗапроса=ТекстЗапроса+" | WHERE ismark='*'"; ИначеЕсли ЭтоСКЛ=0 Тогда ТекстЗапроса=ТекстЗапроса+" |WITH (NOLOCK) | WHERE ismark=1"; КонецЕсли; ТекстЗапроса=ТекстЗапроса+" | Журнал.ISMARK = "+?(ЭтоСКЛ=1,1,"'*'")+" AND | Журнал.Date"+?(ЭтоСКЛ=1,"_TIME_IDDOC","")+" BETWEEN :НачДата"+?(ЭтоСКЛ=1,"","~~")+" AND :КонДата~"+?(ЭтоСКЛ=1,"","~")+""; |ORDER BY | "+?(ЭтоСКЛ=1,"Журнал.DATE_TIME_IDDOC","Журнал.DATE")+" |"; На 1cpp.ru была статья про разницу в хранении данных | ||
Mihenius 49 - 09.12.20 - 16:27 | |||
Mihenius 50 - 09.12.20 - 16:27 | Легче оставить все как есть на виртуалке, мое мнение.
Чем переписывать архивную базу. | ||
mihalich979 51 - 09.12.20 - 16:33 | (50) отчетов там туева хуча.
блин. хотел избавиться от древнего сервера и древней SQL И вот те на - низя. тут еще сложности запустить это все SQL-льное в windows 10 тоже ошибок тьма - просто при запуске 1с 77 | ||
Builder 52 - 09.12.20 - 17:36 | (51) SQL 2008 вам в помощь. На 7.7 работает отлично на ОдномНужномРелизе. | ||
mihalich979 53 - 10.12.20 - 08:51 | (52) что за нужный релиз и где его взять? | ||
mihalich979 54 - 10.12.20 - 09:18 | Еще вопрос чтобы темы не плодить.
Есть одна база 77 самописная конфа
но в ней установлен пароль на открытие конфигурации.
Есть вариант получить этот пароль? повторю что админ предыдущий ушел с концами и без вариантов связи. | ||
ДенисЧ 55 - 10.12.20 - 09:22 | (54) Паяльник и собака-ищейка. | ||
arsik 56 - 10.12.20 - 09:37 | (54) Есть вариант просто снять этот пароль с конфы. | ||
Mikeware 57 - 10.12.20 - 09:37 | (54) есть такие патчи...
"у нас есть такие ракеты, но мы вам о них не расскажем"© ибо "удивительное-рядом, но оно - запрещено!"© | ||
JeHer 58 - 10.12.20 - 10:00 | (51) сдаётся мне, что прямые запросы могут быть не только в отчетах. Но и модулях объектов. Вертай всё взад, короче. | ||
Mikeware 59 - 10.12.20 - 10:07 | (58) у него ж база архивная. объекты меняться не будут | ||
uno-group 60 - 10.12.20 - 10:09 | (54) Нафига он тебе если ты в 7.7 ноль, а судя по прямым запросам там чел довольно высокого уровня работал. И без продвинутых знаний там и семерошник не каждый с ходу разберется, а тот кто разберется этот пароль и так обойдет. Что могло случиться такого, что понадобилось что-то дописывать в старых архивных базах? Отдай эту работу на аутсортинг дешевле и быстрее будет чем потратить несколько месяцев на прокачку навыков работы с 7.7. Рекламное место пустует | ||
Mikeware 61 - 10.12.20 - 10:11 | (60) хоссподя. да прямые запросы - они как восьмерошные... | ||
uno-group 62 - 10.12.20 - 10:51 | (61) Обычно прямыми запросами мало кто ограничивается. Там до кучи наверняка и FormEx есть и еще 2-3 ВК легко могут затисатся. Если 7.7. по жизни еще будет нужна то стоит загорячиться, а если нет то смысл на разбирательство с ней время тратить. | ||
Mikeware 63 - 10.12.20 - 10:55 | (62) ну, пусть будет формекс. он от формата хранения не зависит. как и остальные компоненты.
да, поразбираться надо - но объем разборок реально невелик. | ||
mihalich979 64 - 10.12.20 - 11:11 | |||
mihalich979 65 - 10.12.20 - 17:07 | ИТОГ текущий: Оставил все на виртуалке. Отчеты работают. Все работает.
теперь только конфу раскрыть осталось. |
|
Список тем форума |