Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Отбор в журнале ЗаказНаряды (Альфа-авто)  (Прочитано 15952 раз)
0 Пользователей и 1 Гость смотрят эту тему.
nayabuka
Гость
« : 13-10-2009 09:11 » 

Уважаемые специалисты, подскажите пожалуйста. У меня Альфа-авто сетевая версия под 1С V7.7. В журнале ЗаказНаряды внизу возможность отбора документов: - Первый уровень, это по контрагенту либо по состоянию (одно из двух). Но мне этот уровень совершенно не нужен и всегда установлено "По состоянию", иначе не отображает док-ты; - Второй уровень, если первый установлен "По состоянию", то во вкладках - "Стоянка", "Заявка", "В работе", "Закрыт". Но пока что-то из этих значений не выберешь, - ничего не отображает как бы я ни мучился. Однако такого казуса не наблюдается в журнале "Общий". Там отображается абсолютно всё. Однако я бы с этим и жил, но нужно сделать чтобы разом в журнале отображались заказ-наряды закрытые, проведённые, в состоянии заявки и во всяких возможных состояниях.
Как мне устранить сей глюк? Или это глюк у меня? К программированию 1С я отношения никакого не имею, однако знаком с ассемблером микроконтроллеров и могу даже написать для них незамысловатую программку.

Как у человека владеющего элементарной логикой, - у меня создалось впечатление, что где-то ошибка в программе, которая заключается в следующем: Если не выбрано значение отбора, то никакие док-ты не отображаются. А мне надо наоборот. Если не выбрано значение - отобразить в журнале все документы. А отборы нихай себе будут, дабы при необходимости отфильтровать ненужное.

Заранее благодарю за ответ
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 13-10-2009 10:01 » 

С логикой все в порядке - похоже действительно так.
Покольку с Альфа-авто не знаком, то напиши сюда полностью текст процедуры/функции, которая содержит вызов УстановитьОтбор на форме журнала ЗаказНаряды.
Записан
nayabuka
Гость
« Ответ #2 : 13-10-2009 12:34 » 

   Процедура ПриВыбореЗакладки(НомЗак,ЗначЗак)
      глЖурналОбработкаФормы(Контекст,"Закладка",ЗначЗак);
      Если НомЗак=1 Тогда
         Если ТипЗначения(АналитикаОтбора)=10 Тогда
            Аналит_Прежн=АналитикаОтбора;
            АналитикаОтбора=Перечисление.СостояниеЗаказНаряда.Заявка;
            ПриВыбореЗначения("АналитикаОтбора");
         КонецЕсли;
      Иначе
         Если ТипЗначения(АналитикаОтбора)=10 Тогда
            Если ПустоеЗначение(Аналит_Прежн)=0 Тогда
               АналитикаОтбора=Аналит_Прежн;
               ПриВыбореЗначения("АналитикаОтбора");
            КонецЕсли;
         КонецЕсли;
      КонецЕсли;
   КонецПроцедуры  // ПриВыбореЗакладки

Может, эта процедура?

Это модуль журнала Заказ-наряды.

   Если Право [85]=0 Тогда
                 Форма.тФлагЭкспорта.Видимость(0);
               КонецЕсли;
            ИначеЕсли ОбрСтолбец="Начало" Тогда
               Форма.ДатаНач.Видимость(спВидимости.Пометка(К));
               Форма.ВремяНачала.Видимость(спВидимости.Пометка(К));
            ИначеЕсли ОбрСтолбец="Окончание" Тогда
               Форма.ДатаОкончания.Видимость(спВидимости.Пометка(К));
               Форма.ВремяОкончания.Видимость(спВидимости.Пометка(К));
            ИначеЕсли ОбрСтолбец="Автомобиль" Тогда
               Форма.Автомобиль.Видимость(спВидимости.Пометка(К));
               Форма.колVIN.Видимость(спВидимости.Пометка(К));
               Форма.колГосНомер.Видимость(спВидимости.Пометка(К));
            ИначеЕсли ОбрСтолбец="ВидРемонтаЦех" Тогда
               Форма.ВидРемонта.Видимость(спВидимости.Пометка(К));
               Форма.Подразделение.Видимость(спВидимости.Пометка(К));
            ИначеЕсли ОбрСтолбец="АвторФирма" Тогда
               Форма.тАвтор.Видимость(спВидимости.Пометка(К));
               Форма.тФирма.Видимость(спВидимости.Пометка(К));
            КонецЕсли;
         Иначе Сообщить("Удалите идентификатор в списке видимости <"+ОбрСтолбец+"> из модуля формы списка - журнала заказ-нарядов");
         КонецЕсли;
      КонецЦикла;
   КонецПроцедуры //УстановитьВидимостьКолонок
   //-----------------------------------------------
   Функция ПриВыбореЗначения(Об="")
      // Рекурсивная Функция обработки всех экранных объектов.
      Если Об="" Тогда Об=Форма.АктивныйЭлемент(); КонецЕсли;
      Если Об="" Тогда
      ИначеЕсли Об="кнПоиск" Тогда// Здесь должны быть обработчики реквизитов
         ПоискПоКритериям();
      ИначеЕсли Об="СпВар" Тогда
         Если СпВар.ТекущаяСтрока()=7 Тогда
            Форма.СтрПоиск.НазначитьТип("Справочник.ВидРемонта");
         Иначе
            Форма.СтрПоиск.НазначитьТип("Строка",30);
            СтрПоиск="";
         КонецЕсли;
      ИначеЕсли Об="кнПодчиненные" Тогда
         Если ПустоеЗначение(ТекущийДокумент)=0 Тогда
            ОткрытьФорму("Журнал.Подчиненные",,ТекущийДокумент);
         КонецЕсли;
      ИначеЕсли Об="кнДействия" Тогда
         спДопДействия=СоздатьОбъект("СписокЗначений");
         глЖурналОткрытьОтчет(Контекст, глЖурналОбработкаФормы(Контекст,Об,спДопДействия), "Подразделение", "Подразделения");
         Возврат 1;
      ИначеЕсли Об="кнВидимость" Тогда
         Попытка   // А вдруг значение видимости не сохранено
            спВидимости=ВосстановитьЗначение("ВидимостьСтолбцовЖурналЗН");
            спВидимости.ДобавитьЗначение("Отметьте отображаемые столбцы ...");
            ОткрытьФормуМодально("Обработка.ПометкаСписка",спВидимости);
            СохранитьЗначение("ВидимостьСтолбцовЖурналЗН",спВидимости);
            УстановитьВидимостьКолонок(спВидимости);
         Исключение
         КонецПопытки;
      Иначе Возврат глЖурналОбработкаФормы(Контекст,Об);
      КонецЕсли;
      Возврат 1;
   КонецФункции   // ПриВыбореЗначения
   
   //-----------------------------------------------
   Функция ПоказатьХО()
      // Показывает сокращенное наименование хоз.операции
      Если ПустоеЗначение(ТекущийДокумент)=1 Тогда Возврат "";
      Иначе Возврат СокрЛ(СтрЗаменить(ТекущийДокумент.ХозОперация,"Отгрузка",""));
      КонецЕсли;
   КонецФункции // ПоказатьХО
   
   //_____________________________________________________________________________
   Функция ПоказатьВидРемонта()
      Если ПустоеЗначение(ТекущийДокумент)=1 Тогда Возврат "";
      Иначе Возврат глПолучитьАтрибут(ТекущийДокумент,"ВидРемонта");
      КонецЕсли;
   КонецФункции //ПоказатьВИдРемонта
   
   ///////////////////////////////////////////////////////////////////////////
   // ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ
   ///////////////////////////////////////////////////////////////////////////
   //-----------------------------------------------
   Процедура ПриНачалеВыбораЗначения(Идент,Флаг)
      Флаг=глЖурналОбработкаФормы(Контекст,"ПриНачалеВыбораЗначения",Идент);
   КонецПроцедуры // ПриНачалеВыбораЗначения
   
   //-----------------------------------------------
   Процедура ПриПовторномОткрытии()
      Если ПустоеЗначение(Форма.Параметр)=1 Тогда Возврат;
      ИначеЕсли ТипЗначения(Форма.Параметр)=12 Тогда   // Поиск
         глЖурналНайтиДокумент(Контекст,Форма.Параметр);
      КонецЕсли;
   КонецПроцедуры  // ПриПовторномОткрытии
   
   //-----------------------------------------------
   Процедура ПриОткрытии()
      ИмяЖурнала="ЗаказНаряды";
      глЖурналПриОткрытии(Контекст,Форма.Параметр);
      спВидимостиКолонок=СоздатьОбъект("СписокЗначений");
      спВидимостиКолонок=ВосстановитьЗначение("ВидимостьСтолбцовЖурналЗН");
      УстановитьВидимостьКолонок(спВидимостиКолонок);
      ПриПовторномОткрытии();
      Если Форма.Закладки.ТекущаяСтрока()=2 Тогда
         Если ТипЗначения(АналитикаОтбора)=10 Тогда
            АналитикаОтбора=Перечисление.СостояниеЗаказНаряда.ВРаботе;
            ПриВыбореЗначения("АналитикаОтбора");
         КонецЕсли;
      КонецЕсли;
      СпВар.ДобавитьЗначение("НомерДок","по номеру документа");//1
      СпВар.ДобавитьЗначение("Код","по VIN автомобиля");//2
      СпВар.ДобавитьЗначение("ГосНомер","по гос. № автомобиля");//3
      СпВар.ДобавитьЗначение("Хозяин","по фамилии хозяина");//4
      СпВар.ДобавитьЗначение("Заказчик","по фамилии заказчика");//5
      СпВар.ДобавитьЗначение("НомерКузова","по номеру кузова");//6
      СпВар.ДобавитьЗначение("ВидРемонта","по виду ремонта");//7
      ВидПоиска=ВосстановитьЗначение("ВидПоиска");
      Если ПустоеЗначение(ВидПоиска)=1 Тогда
         ВидПоиска=1;
      КонецЕсли;
      СпВар.ТекущаяСтрока(ВидПоиска);
      ПриВыбореЗначения("СпВар");
      ДатаНачала=НачалоИнтервала();
   КонецПроцедуры  // ПриОткрытии
   
   //-----------------------------------------------
   Процедура ПриЗакрытии()
      глЖурналПриЗакрытии(Контекст);
      СохранитьЗначение("ВидПоиска",СпВар.ТекущаяСтрока());
   КонецПроцедуры  // ПриЗакрытии
   
   //-----------------------------------------------
   Процедура ПриВыбореЗакладки(НомЗак,ЗначЗак)
      глЖурналОбработкаФормы(Контекст,"Закладка",ЗначЗак);
      Если НомЗак=1 Тогда
         Если ТипЗначения(АналитикаОтбора)=10 Тогда
            Аналит_Прежн=АналитикаОтбора;
            АналитикаОтбора=Перечисление.СостояниеЗаказНаряда.Заявка;
            ПриВыбореЗначения("АналитикаОтбора");
         КонецЕсли;
      Иначе
         Если ТипЗначения(АналитикаОтбора)=10 Тогда
            Если ПустоеЗначение(Аналит_Прежн)=0 Тогда
               АналитикаОтбора=Аналит_Прежн;
               ПриВыбореЗначения("АналитикаОтбора");
            КонецЕсли;
         КонецЕсли;
      КонецЕсли;
   КонецПроцедуры  // ПриВыбореЗакладки
   //-----------------------------------------------
   спВидимостиРеквизитов=СоздатьОбъект("СписокЗначений");
   спВидимостиРеквизитов.ДобавитьЗначение("Экспорт","Флажок экспорта в бухг-рию");
   спВидимостиРеквизитов.ДобавитьЗначение("Начало","Начало выполнения работ");
   спВидимостиРеквизитов.ДобавитьЗначение("Окончание","Оконч. выполнения работ");
   спВидимостиРеквизитов.ДобавитьЗначение("Автомобиль","Модель, VIN, гос.№");
   спВидимостиРеквизитов.ДобавитьЗначение("ВидРемонтаЦех","Вид ремонта и цех (пост)");
   спВидимостиРеквизитов.ДобавитьЗначение("АвторФирма","Автор документа и фирма");
   глСписокДействие(спВидимостиРеквизитов,"ВсеПометить");
   спСохрВидимости=ВосстановитьЗначение("ВидимостьСтолбцовЖурналЗН");
   Попытка
      Если спСохрВидимости.РазмерСписка()<>спВидимостиРеквизитов.Размерсписка() Тогда
         // Сохраним список для работы процедур
         СохранитьЗначение("ВидимостьСтолбцовЖурналЗН",спВидимостиРеквизитов);
      КонецЕсли;
   Исключение СохранитьЗначение("ВидимостьСтолбцовЖурналЗН",спВидимостиРеквизитов);
   КонецПопытки;


Извиняюсь за объём информации, но вычленить из этого текста именно ту процедуру, которая осуществляет отбор документов в этом журнале, для меня оказалось сложной задачей Здесь была моя ладья...
« Последнее редактирование: 15-10-2009 05:11 от Sel » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 13-10-2009 13:09 » 

Сохрани это все в текстовый файл и прикрепи к сообщения, т.к. объем сообщения ограничен и все это режется (посмотри сам внимательно)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 13-10-2009 13:09 » 

И нужен именно модуль журнала, а не документа
Записан
nayabuka
Гость
« Ответ #5 : 13-10-2009 13:15 » 

Вот модуль журнала ЗаказНаряды в вордовском документе.

* Модуль журнала ЗаказНаряды.doc (52 Кб - загружено 1152 раз.)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 13-10-2009 16:58 » 

Нужна еще процедура из глобального модуля глЖурналОбработкаФормы()
Записан
nayabuka
Гость
« Ответ #7 : 14-10-2009 17:26 » 

Я не уверен что нашёл именно тот кусок, но на мой взгляд вроде тот, если доверять моей интуиции... Меня одолевают смутные сомнения
Здесь кусок на который у меня подозрения. А весь модуль я поделю на 2 части и вложу в 2 других сообщения, т.к. он весь вышел в 423кб.
//-----------------------------------------------
Процедура глЖурналНайтиДокумент(Конт,Док) Экспорт
// Процедура расчитана на работу со стандартизованым журналом отбора.
// Пытается установить журнал на указанный документ, если это возможно
   Если (ПустоеЗначение(Док)=1) или (ТипЗначения(Док)<>12) Тогда Возврат; КонецЕсли;
   Попытка   Конт.АктивизироватьОбъект(Док);   Исключение КонецПопытки;
   Если Конт.ТекущийДокумент<>Док.ТекущийДокумент() Тогда
   // Документ не спозиционировался. Попробуем решить проблему.
      Попытка
         // Растянем интервал журнала до документа
         ДатаДок=Док.ДатаДок;
         ДатаНачала=МИН(Конт.НачалоИнтервала(),ДатаДок);
         ДатаКонца=МАКС(Конт.КонецИнтервала(),ДатаДок);
         Конт.УстановитьИнтервал(ДатаНачала,ДатаКонца);
         глЖурналЗаголовок(Конт);
         // Проверим отбор журнала и изменим закладку при необходимости
         Если Конт.Форма.ИспользоватьЗакладки()=1 Тогда
            Если Конт.Отбор=2 Тогда ЗнОтб=Док.ПолеОтбора2;
            Иначе  ЗнОтб=Док.ПолеОтбора1;
            КонецЕсли;
            НомЗ=Конт.Форма.Закладки.НайтиЗначение(ЗнОтб);
            Если НомЗ<>0 Тогда
               Конт.Форма.Закладки.ТекущаяСтрока(НомЗ);
               Конт.ПрефиксВида=ЗнОтб;
            КонецЕсли;
         КонецЕсли;
         // Проверим наличие отбора по подразделению и снимем его при необходимости
         Конт.АналитикаОтбора=Пусто;
      Исключение
      КонецПопытки;
      // Ну вот теперь попробуем повторить позиционирование !
      Попытка   
         глЖурналОбработкаФормы(Конт, "АналитикаОтбора");
         Конт.АктивизироватьОбъект(Док);
      Исключение
      КонецПопытки;
      // Далее проверять не будем - если не спозиционировался, то УВЫ !
   КонецЕсли;
КонецПроцедуры   // Процедура глЖурналНайтиДокумент

//-----------------------------------------------

« Последнее редактирование: 14-10-2009 17:32 от nayabuka » Записан
nayabuka
Гость
« Ответ #8 : 14-10-2009 17:30 » 

Вот первая часть гл. модуля

* Часть 1 глобального модуля.txt (219.88 Кб - загружено 3475 раз.)
Записан
nayabuka
Гость
« Ответ #9 : 14-10-2009 17:31 » 

Вот вторая часть того же текста

* Часть 2 глобального модуля.txt (203.57 Кб - загружено 1441 раз.)
Записан
agentus
Гость
« Ответ #10 : 09-04-2010 15:14 » 

Справа от поля Состояние есть желтый крестик. Его нажми. )))
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines