Имя: Пароль:
1C
1С v8
заполнение ТЧ оставшихся строк табличного поля значением текущей колонки
,
0 Chebyrashka2D
 
30.06.16
16:22
Добрый день товарищи.
Помогите плз начинающему программисту 1с.
суть - создал свой документ, в нём есть колонки Дата Начало и Дата Конец (тип Дата), не могу разобраться как написать процедуру по автоматическому заполнению всех строк в это колонке, при условии заполнения руками хотя бы одной строки в данной колонке (Дата начало или Дата конец). А то менеджеры меня побьют заполняя десятки строк датами(((
1 Ёпрст
 
30.06.16
16:29
заполнитьЗначения
2 Nuobu
 
30.06.16
16:29
(0) Процедура ЗаполнитьДату()
ДатаВТЧ = Неопределено;
Для Каждого СтрокаТЧ из ТЧ Цикл
Если СтрокаТЧ.ДатаНачало <> Дата('00010101') Тогда
ДатаВТЧ = строкаТЧ.ДатаНачало;
Прервать;
ИначеЕсли СтрокаТЧ.ДатаКонец <> Дата('00010101') Тогда
ДатаВТЧ = строкаТЧ.ДатаКонец;
Прервать;
КонецЕсли;
КонецПроцедуры

Если ДатаВТЧ <> Неопределено Тогда
Для Каждого СтрокаТЧ из ТЧ ЦИкл
СтрокаТЧ.ДатаНачало = ДатаВТЧ;
СтрокаТЧ.ДатаКонец = ДатаВТЧ;
КонецЦикла;
КонецЕсли;
3 Гаврилин Игор
 
30.06.16
16:29
Ну определи какой шаг должен быть между 2мя точками интервала и в цикле заполни.
4 lxs
 
30.06.16
16:38
(0) Обычное приложение, обработка заполнения табличных частей, заполнение всех строк ТЧ значением из первой строки выделенной колонки.


Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ЭлементТабличноеПоле) Экспорт
    
    ИмяКолонки = ЭлементТабличноеПоле.ТекущаяКолонка.Имя;
    
    Если Объект[ИмяТабличнойЧасти].Количество() Тогда
        
        Значение = Объект[ИмяТабличнойЧасти].Получить(0)[ИмяКолонки];
    
        Для каждого ТекСтрока Из Объект[ИмяТабличнойЧасти] Цикл
            
            ТекСтрока[ИмяКолонки] = Значение;
            
        КонецЦикла;
        
    КонецЕсли;
    
КонецПроцеду
5 Chebyrashka2D
 
30.06.16
17:06
Спасибо за быстрые ответы. Простите что не написал про конфигурацию - УТ 11.2.
Использовал первый предложенный код, подставил свои значения, процедура не отрабатывает, где я торможу? вот код- &НаСервере
Процедура ЗаполнитьДату()
ДатаВТЧ = Неопределено;
Для Каждого СтрокаТЧ из Документы.ПонедельноеПланирование.ТабЧастьНеделя Цикл
Если СтрокаТЧ.ДатаНачало <> Дата('00010101') Тогда
ДатаВТЧ = строкаТЧ.ДатаНачало;
Прервать;
ИначеЕсли СтрокаТЧ.ДатаКонец <> Дата('00010101') Тогда
ДатаВТЧ = строкаТЧ.ДатаКонец;
Прервать;
КонецЕсли;
КонецЦикла;

Если ДатаВТЧ <> Неопределено Тогда
Для Каждого СтрокаТЧ из Документы.ПонедельноеПланирование.ТабЧастьНеделя ЦИкл
СтрокаТЧ.ДатаНачало = ДатаВТЧ;
СтрокаТЧ.ДатаКонец = ДатаВТЧ;
КонецЦикла;
КонецЕсли;

КонецПроцедуры
6 lxs
 
30.06.16
17:11
(5) вот тут:


Документы.ПонедельноеПланирование.ТабЧастьНеделя
7 lxs
 
30.06.16
17:12
Объект.ПонедельноеПланирование.ТабЧастьНеделя
8 lxs
 
30.06.16
17:12
*Объект.ТабЧастьНеделя
9 Chebyrashka2D
 
30.06.16
17:43
Спасибо Мастера.
только процедуур переписать не много пришлось. а то меняю одну колонку, а перезаполнение идёт по обеим))
&НаСервере
Процедура ЗаполнитьДатуНачало()
ДатаВТЧ = Неопределено;
Для Каждого СтрокаТЧ из Объект.ТабЧастьНеделя Цикл
Если СтрокаТЧ.ПеваяНеделяНачало <> Дата('00010101') Тогда
ДатаВТЧ = строкаТЧ.ПеваяНеделяНачало;
Прервать;
КонецЕсли;
КонецЦикла;

Если ДатаВТЧ <> Неопределено Тогда
Для Каждого СтрокаТЧ из Объект.ТабЧастьНеделя ЦИкл
СтрокаТЧ.ПеваяНеделяНачало = ДатаВТЧ;
КонецЦикла;
КонецЕсли;

КонецПроцедуры

Процедура ЗаполнитьДатуКонец ()
    
ДатаВТЧ = Неопределено;
Для Каждого СтрокаТЧ из Объект.ТабЧастьНеделя Цикл    
Если СтрокаТЧ.ПерваяНеделяКонец <> Дата('00010101') Тогда
ДатаВТЧ = строкаТЧ.ПерваяНеделяКонец;
Прервать;
КонецЕсли;
КонецЦикла;

Если ДатаВТЧ <> Неопределено Тогда
Для Каждого СтрокаТЧ из Объект.ТабЧастьНеделя ЦИкл
СтрокаТЧ.ПерваяНеделяКонец = ДатаВТЧ;
КонецЦикла;
КонецЕсли;
    
    
КонецПроцедуры    

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ЗаполнитьДатуНачало();
    ЗаполнитьДатуКонец ();
КонецПроцедуры

В любом случае спасибо.
Вопросик возни, не подскажете литературу, или ресурсы, где подробно описано как писать процедуры и функции??
Заранее благодарю!
10 Nuobu
 
30.06.16
17:44
в ЖКК.
11 lxs
 
01.07.16
09:28
&НаКлиенте
Процедура СписокПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    СписокПриОкончанииРедактированияНаСервере(Элемент.ТекущийЭлемент.Имя, Элемент.ТекущиеДанные[Элемент.ТекущийЭлемент.Имя]);
КонецПроцедуры

&НаСервере
Процедура СписокПриОкончанииРедактированияНаСервере(ИмяКолонки, Значение)
    
    Если ИмяКолонки = "ДатаРождения" Тогда
        ТаблицаЗначений = Объект.Список.Выгрузить();
        ТаблицаЗначений.ЗаполнитьЗначения(Значение, ИмяКолонки);
        Объект.Список.Загрузить(ТаблицаЗначений);
    КонецЕсли;
    
КонецПроцедуры
12 lxs
 
01.07.16
09:31
(11)+ при условии, что имена колонок списка на форме совпадают с именами реквизитов ТЧ
13 Chebyrashka2D
 
01.07.16
10:31
Ок. Спасибо!)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой