Имя: Пароль:
1C
1C 7.7
v7: Признак, что сотрудник уже был выгружен в Эксель
,
0 листопад
 
12.05.14
22:44
Данные по сотруднику выгружаются в Эксель (только из спр.Сотрудники). В спр.Сотрудники добавлен реквизит - флаг "Признак". В процедуре ПриЗаписи(), он устанавливается равным 1, т.е. при любом изменении в спр.Сотрудники Признак=1.
Как предусмотреть обнуление этого Признака, если сотрудник уже был выгружен в Эксель? Подскажите идею. Т.е. задача состоит в том, чтобы при последующей выгрузке сотрудников в Эксель, выгружались не все сотрудники, а только у кого были какие-то изменения в спр.Сотрудники (для этого ПриЗаписи() ставим Пизнак=1). А вот как теперь реализовать обнуление этого Признака?
1 Волшебник
 
модератор
12.05.14
22:48
заведи план обмена
2 Фокусник
 
12.05.14
22:48
(0) при очередной выгрузке элемента присвоить реквизиту 0 и записать в базу.
А что есть выгрузка в Эксель?
3 miki
 
12.05.14
22:48
спр.Сотрудники.Признак=0;
спр.Сотрудники.Записать();
(с)кэп
4 фобка
 
12.05.14
22:50
(1) в семерке нет) здесь очень простой и странный вопрос и не менее странный ответ: чтобы при выгрузке обнулить признак элемента его надо тупо обнулить
5 Мигало
 
12.05.14
22:50
ВыгрузитьСотрудникаВXLS();

спр.Сотрудники.Признак=0;
спр.Сотрудники.Записать();

(с) дважды кэп
6 spectre1978
 
12.05.14
22:50
(1) на семерке?
7 листопад
 
12.05.14
22:51
(3) Наоборот, ПриЗаписи():
спр.Сотрудники.Признак=1;
спр.Сотрудники.Записать();

Признак установлен в 1. Выгружаем в Эксель сотрудника. А как теперь этот признак поставить в ноль?
8 фобка
 
12.05.14
22:51
А у него признак при записи ставится - ну тогда используй локальную переменную которую ты будешь заполнять только при открытии и условие на нее при записи
9 miki
 
12.05.14
22:53
(7)В ПриЗаписи() нет нужды обращаться к реквизиту через объект, достаточно просто выставить значение в 1.
Покажи код выгрузки в эксель.
10 miki
 
12.05.14
22:55
(8)имхо, ты был прав как раз в (4).
11 spectre1978
 
12.05.14
22:56
(7) так же, как ставили в 1, только вместо 1 ноль.
12 листопад
 
12.05.14
23:00
(2), (9) Выгрузка в Эксель:

Процедура ВыгрузитьСотрудников()
    
Попытка
x=СоздатьОбъект("Excel.Application");
Исключение
    Сообщить(ОписаниеОшибки(),"!!!");
    Сообщить("Возможно, MS Excel не установлен на этом компьютере.");
    Возврат;
КонецПопытки;

x.Workbooks.Add();   //книга
x.WorkSheets(1).Cells(1,1).Value="TAB_NOMER";                                        
x.WorkSheets(1).Cells(1,2).Value="FIO";                        
x.Worksheets(1).Cells(1,3).Value="ROZHD_DATA";                        
x.WorkSheets(1).Cells(1,4).Value="POL";                                
x.WorkSheets(1).Cells(1,7).Value="INN";                            
x.WorkSheets(1).Cells(1,8).Value="PFR";                                
x.WorkSheets(1).Cells(1,9).Value="LIC_SCHET";                    

x.Worksheets(1).Name = ИмяФайла;

Сотрудники = СоздатьОбъект("Справочник.Сотрудники");

Сотрудники.ВыбратьЭлементы(1);
    
ИтераторСотр = 1;

Пока Сотрудники.ПолучитьЭлемент() = 1 Цикл

    Если Сотрудники.ЭтоГруппа() + Сотрудники.ПометкаУдаления() <> 0 тогда
    Продолжить;
КонецЕсли;

ИтераторСотр = ИтераторСотр + 1;


    x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,1).Value        = "'"+Сотрудники.Код;
    x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,2).Value        = "'"+Сотрудники.Наименование;  
    x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,3).Value        = "'"+Формат(Сотрудники.ДатаРождения,"ДФ=dd.MM.yyyy");
    x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,4).Value        = "'"+Сотрудники.Пол;
    x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,7).Value        = "'"+Сотрудники.ИНН;
    x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,8).Value        = "'"+Сотрудники.СтраховойНомерПФР;
    x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,9).Value        = "'"+Сотрудники.НомерЗарплатногоСчета;
    
    КонецЦикла;


x.Quit();

Сообщить("Выгрузка завершена", "!");    

КонецПроцедуры
13 Фокусник
 
12.05.14
23:00
(7) "Выгружаем в Эксель сотрудника"
Что имеется ввиду под выгрузкой, конкретно?
14 Фокусник
 
12.05.14
23:02
(12) перед КонецЦикла нужно добавить:
Сотрудники.Признак = 0;
Сотрудники.Записать();
15 фобка
 
12.05.14
23:02
(9) ну да единичка только модуле формы ставится, призаписи() ее процедура. Давно клюшки не щупал
16 miki
 
12.05.14
23:05
(14)именно так, только автору не поможет, всё равно проверки на Признак=1 в его коде нет.
17 фобка
 
12.05.14
23:06
(16) а это уже будет следующим вопросом))
18 листопад
 
12.05.14
23:07
(16) Это я допишу ))) Надеюсь )))
19 КонецЦикла
 
12.05.14
23:22
УРБД есть?
20 Torquader
 
13.05.14
20:35
Я бы на вашем месте просто заглянул в файл Excel, чтобы увидеть - есть ли там сотрудник или нет, так как всё равно есть вероятность, что его оттуда удалят.