Имя: Пароль:
1C
1C 7.7
v7: У меня лог ошибка в коде не выводится должность
,
0 ЮлияКорж
 
07.11.11
11:33
Процедура Сформировать()
м=0;
таб=СоздатьОбъект("Таблица");
таб.ИсходнаяТаблица("Результаты");
таб.ВывестиСекцию("Шапка");
Сотр=СоздатьОбъект("Справочник.Сотрудники");
CпрНазнач=СоздатьОбъект("Справочник.Назначения");
Сотр.ВыбратьЭлементы();
Пока Сотр.ПолучитьЭлемент()>0 Цикл
   м=м+1;
   таб.ВывестиСекцию("Результат");    
КонецЦикла;
   CпрНазнач.ИспользоватьВладельца(Сотр);
   CпрНазнач.ВыбратьЭлементы();
Пока CпрНазнач.ПолучитьЭлемент()>0 Цикл
   ЕСЛИ ПустоеЗначение(CпрНазнач.ДатаОкончанияДействия)=1 Тогда
           таб.ПрисоединитьСекцию("Должность");
//        таб.ПрисоединитьСекцию("Результат|Должность");
   таб.ВывестиСекцию("Результат|Должность");
   КонецЕсли;
КонецЦикла;
таб.Показать("Результаты");
таб.ТолькоПросмотр(1);
КонецПроцедуры
1 Mikeware
 
07.11.11
11:34
ошибка не в коде....
2 ДенисЧ
 
07.11.11
11:35
я шизею с этого кода...
3 ЧеловекДуши
 
07.11.11
11:35
Я шизею с заголовка без запятых :)
4 filh
 
07.11.11
11:36
Забавно! ТС 1С это не ваше, бросьте и займитесь другим заработком, более прибыльным.
5 ЧеловекДуши
 
07.11.11
11:36
+ Код даже не хочется рассматривать :)
(0)Может просто выложишь саму обработку на файло помойку и может найдется рыцарь :)
6 Азат
 
07.11.11
11:37
(0) давай - ты мне 1000 р на мобилку, а я исправлю твой спагетти-код?
7 ЮлияКорж
 
07.11.11
11:37
Открываю выборку по справочнику назначение и хочу вывести поле должность делаю проверку на актуальность должности, должность не периодический реквизит все значения по полям  сотрудника необходимые выводятся, кроме должности
8 filh
 
07.11.11
11:39
(7) сколько?
9 ЧеловекДуши
 
07.11.11
11:40
(7)По коду ты скачала делаешь "таб.ВывестиСекцию("Результат"); "
т.е. выводишь всю таблицу построчно.

Затем ты К последней выведенной строке в цикле № 1 присваиваешь должность
"таб.ПрисоединитьСекцию("Должность");" (бред сивой кобылы)

Затем еще каждый раз делаешь еще "таб.ВывестиСекцию("Результат|Должность");" (блеск футуристической эргономики)
10 ЧеловекДуши
 
07.11.11
11:41
+(7)Код в помойку.
11 Шапокляк
 
07.11.11
11:41
Жуть! Сначала перебрала всех сотрудников в цикле, потом перебираете все Назначения последнего сотрудника? Что в секции Должность должно выводиться должны телепаты догадываться?
12 ЧеловекДуши
 
07.11.11
11:42
(11)Ладно телепаты, мне страшно представить получаемую печатную форму :)
13 ЧеловекДуши
 
07.11.11
11:42
+(11)Следуя условию в (7), код явно не тот.
14 Шапокляк
 
07.11.11
11:44
(13) На какой тарабарщине человек пишет, на такой и думает, так что все логично "в огороде бузина а в киеве дядька как холодно на улице".
15 picom
 
07.11.11
11:46
(0) первый конеццикла поместить после последнего
хотя не уверен что именно это требуется
16 СБ с Одинесии
 
07.11.11
11:46
(0) Позорный код. Ты сначала перебираешь справочник сотрудников, формируешь некий отчёт, а после используешь подчинённый ему справочник назначений, не понимая, что нет позиционирования на справочнике-владельце. Или, простыми словами, второй цикл не работает, т.к. условие ложное.
17 zuza
 
07.11.11
12:39
(16) И почему это второй цикл не работает? Работает по последнему элементу спр-ка Сотрудники(владельцу).
18 1Сергей
 
07.11.11
12:47
ещё тут что-то намудрила:

   таб.ВывестиСекцию("Результат");    
...
           таб.ПрисоединитьСекцию("Должность");
   таб.ВывестиСекцию("Результат|Должность");


надо делать сперва ВывестиСекцию, где у казать и горизонтальную и вертикальную секции, а потом ПрисоединитьСекцию, где тоже указать и горизонтальную и вертикальную секции
19 Начинающий Программер
 
07.11.11
12:56
Как-то так ближе к истине:

Процедура Сформировать()
   таб = СоздатьОбъект("Таблица");
   таб.ИсходнаяТаблица("Результаты");
   таб.ВывестиСекцию("Шапка");
   
   Сотр=СоздатьОбъект("Справочник.Сотрудники");
   CпрНазнач=СоздатьОбъект("Справочник.Назначения");
   
   Сотр.ВыбратьЭлементы();
   Пока Сотр.ПолучитьЭлемент()>0 Цикл
       таб.ВывестиСекцию("Результат");
       CпрНазнач.ИспользоватьВладельца(Сотр.ТекущийЭлемент());
       CпрНазнач.ВыбратьЭлементы();
       Пока CпрНазнач.ПолучитьЭлемент()>0 Цикл
           ЕСЛИ ПустоеЗначение(CпрНазнач.ДатаОкончанияДействия)=0 Тогда
               таб.ПрисоединитьСекцию("Должность");
           КонецЕсли;
       КонецЦикла;    
   КонецЦикла;
   таб.Показать("Результаты");
   таб.ТолькоПросмотр(1);
КонецПроцедуры
20 BlackSeaCat
 
07.11.11
14:20
Гм! Лично я бы поостерегся давать ТС "исправленный" код не видя, чего она наваяла в таблице "Результаты".
21 Начинающий Программер
 
07.11.11
21:11
(20) Да там 2 колонки походу - сотрудник и должность.
22 Начинающий Программер
 
07.11.11
21:12
Ты смотри, они уже 5 месяцев темы создает, значит, держится на этой должности:-)))
23 Начинающий Программер
 
07.11.11
21:12
(22) они -> она
24 medved_kot
 
07.11.11
22:06
Как я понимаю выводятся секции таблицы в которых стоят формулы со ссылками на поля справочника. Если не выводится "должность", то видимо просто ни в одной из выводимых секций нет ссылки на такое поле (т.е. смотри таблицу). Но в первую очередь смотри код, т.к. об этом уже написали выше.
25 filh
 
08.11.11
00:10
А кто здесь? ТС уже бабло заплатила за решение задачи и попилила бюджет...
26 СБ с Одинесии
 
08.11.11
10:27
(17) Наивный. Цикл заканчивается когда Сотр.ПолучитьЭлемент()=0.
27 ЮлияКорж
 
10.11.11
11:52
Процедура Сформировать()
   Перем М1;
   м=0;
таб=СоздатьОбъект("Таблица");
таб.ИсходнаяТаблица("Результаты");
таб.ВывестиСекцию("Шапка");
Сотр=СоздатьОбъект("Справочник.Сотрудники");
CпрНазнач=СоздатьОбъект("Справочник.Назначения");
ФизЛицо=СоздатьОбъект("Справочник.ФизическиеЛица");
ФЛАГ=0;
Сотр.ВыбратьЭлементы();
Пока Сотр.ПолучитьЭлемент()>0 Цикл
   м=м+1;
       Если ПустоеЗначение(Сотр.ДатаОкончанияДействия)=1 Тогда
CпрНазнач.ИспользоватьВладельца(Сотр);
CпрНазнач.ВыбратьЭлементы();
           Пока CпрНазнач.ПолучитьЭлемент()>0 Цикл
                   ЕСЛИ ПустоеЗначение(CпрНазнач.ДатаОкончанияДействия)=1 Тогда
                       Если ПустоеЗначение(CпрНазнач.Должность)=1 Тогда
                           М1=CпрНазнач.Профессия;
                       Иначе
                           М1=CпрНазнач.Должность;
                       КонецЕсли;
                   КонецЕсли;
           КонецЦикла;
таб.ВывестиСекцию("Результат");
       КонецЕсли;
КонецЦикла;
таб.Показать("Результаты");
таб.ТолькоПросмотр(1);
КонецПроцедуры  
Я написала отчет спасибо за помощь это работающий пример кода
28 BlackSeaCat
 
10.11.11
12:22
Ура! Задача решена всего за три дня.
29 ЮлияКорж
 
10.11.11
17:17
Она была решена ранее в тот же день просто некогда было написать занята была
30 Начинающий Программер
 
10.11.11
17:52
(27) Только зачем тебе вот это:
Перем М1;
   м=0;
   м=м+1;
?
31 2S
 
10.11.11
17:54
налетели вороны...
32 ЮлияКорж
 
10.11.11
18:01
Это для того,чтобы вывести порядковый номер
33 ЮлияКорж
 
10.11.11
18:03
Еще вопросы будут
?
34 BuHu
 
10.11.11
18:05
(33)Есть ответы?
35 ЮлияКорж
 
10.11.11
18:07
Конечно
36 BuHu
 
10.11.11
18:08
(35) отсыпь )
37 ЮлияКорж
 
10.11.11
18:09
подставляй!!!
38 ЮлияКорж
 
10.11.11
18:09
ОТСЫПЛЮ
39 BuHu
 
10.11.11
18:13
(38) тссс , не кричи . подставил
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс