Как изменить реквизит табличной части документа

Как изменить значение реквизита табличной части?

Я
   TheMan

11.06.14 — 09:44

Хэлп…есть справочник, у него есть табличная часть…как изменить значение реквизита этой табличной части? Стандартным механизмом обхода табличной части в цикле, нахождения нужной строки и изменением значения не прокатывает. Сообщить показывает, что значение поменялось, но на форме отображается старое значение…

&НаКлиенте

Процедура ПроектОснованиеПриИзменении(Элемент)                                              

    Структура=ИзменитьИсточникФинансирования();

    
    
    
        Для каждого строка из Объект.ДополнительныеРеквизиты цикл

            
            Если Найти(строка.Свойство,»Источник финансирования»)=Истина тогда  

                
                Сообщить(» ЗашЁЛ!!!»+ строка.Значение+» «+Структура.ИсточникФин+»»);

                строка.Значение = Структура.ИсточникФин;

                
            КонецЕсли;    

        Конеццикла;

    
        

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

  

Партнерская программа EFSOL Oblako

   МойКодУныл

1 — 11.06.14 — 09:45

Записать()

   TheMan

2 — 11.06.14 — 09:46

Не…Когда записываю записывает старое значение…

   Fragster

3 — 11.06.14 — 09:47

Если Найти(строка.Свойство,»Источник финансирования»)=Истина тогда  

— это АдЪ

   Maxus43

4 — 11.06.14 — 09:47

ИзменитьИсточникФинансирования();

там то что?

   TheMan

5 — 11.06.14 — 09:47

т.е. значение, которое на данный момент отображается

   Fragster

6 — 11.06.14 — 09:48

делай на сервере с ТЧ объекта, а не с элементом формы

   TheMan

7 — 11.06.14 — 09:48

ИзменитьИсточникФинансирования();

там то что?

Там на сервере получаю значения структурой..

   TheMan

8 — 11.06.14 — 09:49

делай на сервере с ТЧ объекта, а не с элементом формы

на сервере тоже самое получается. Но я и тут делаю с табличной частью объекта…Дополнительные реквизиты это тч

   Maxus43

9 — 11.06.14 — 09:49

(7) на сервере и меняй

   TheMan

10 — 11.06.14 — 09:51

(7) на сервере и меняй

бесполезно… на форме значение реквизита не меняется

   Maxus43

11 — 11.06.14 — 09:53

(10) читай книги, «разработка в управляемом приложении». Это азы…

   TheMan

12 — 11.06.14 — 09:54

&НаСервере

Процедура ИзменитьИсточникФинансирования()                                                          

    ИсточникФин=»»;

    ТекПланТрудозатраты=»»;

    Запрос = Новый запрос;

    Запрос.Текст=»ВЫБРАТЬ

                 |    ВложенныйЗапрос.Значение,

                 |    Проекты.ТекущийПланТрудозатраты

                 |ИЗ

                 |    Справочник.Проекты КАК Проекты

                 |        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ

                 |            ПроектыДополнительныеРеквизиты.Значение КАК Значение,

                 |            ПроектыДополнительныеРеквизиты.Ссылка КАК Ссылка

                 |        ИЗ

                 |            Справочник.Проекты.ДополнительныеРеквизиты КАК ПроектыДополнительныеРеквизиты

                 |        ГДЕ

                 |            ПроектыДополнительныеРеквизиты.Свойство.Наименование = «»Источник финансирования»») КАК ВложенныйЗапрос

                 |        ПО Проекты.Ссылка = ВложенныйЗапрос.Ссылка

                 |ГДЕ

                 |    Проекты.Ссылка = &Ссылка»;

    Запрос.УстановитьПараметр(«Ссылка»,Объект.ПроектОснование);

    
    Выборка=Запрос.Выполнить();

    Результат=Выборка.Выбрать();

    
    Если Результат.Следующий() тогда

        
    //Сообщить(» «+Результат.Значение+» «);

    //Сообщить(» «+Результат.ТекущийПланТрудозатраты+» «);

    
    Объект.ТекущийПланТрудозатраты=Результат.ТекущийПланТрудозатраты;

    
    ИсточникФин=Результат.Значение;

    КонецЕсли;

    
    
        
        Для каждого строка из Объект.ДополнительныеРеквизиты цикл          

            Если строка.Свойство.Наименование = «Источник финансирования» тогда

                
                Сообщить(«»+ строка.Значение+» «+Результат.Значение+»»);

                строка.Значение = ИсточникФин;

                Сообщить(строка.Значение);

                
            КонецЕсли;    

        Конеццикла;

    
        ВыборкаОбъект.Записать();

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

&НаКлиенте

Процедура ПроектОснованиеПриИзменении(Элемент)                                  

    ИзменитьИсточникФинансирования();

    //Прочитать();

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

Так тоже не работает

   salvator

13 — 11.06.14 — 09:55

(12) Чё за «ВыборкаОбъект»?

   TheMan

14 — 11.06.14 — 09:58

(12) Чё за «ВыборкаОбъект»?

Упс..это я еще пробывал получитьобъект…там использовалась…сейчас комментарий

   TheMan

15 — 11.06.14 — 10:00

Если Найти(строка.Свойство,»Источник финансирования»)=Истина тогда  

— это АдЪ

Эт..да пробывал на клиенте…думал может в этом косяк…

   salvator

16 — 11.06.14 — 10:01

(14) Так скинь нормальный код, ёлы-палы.

   TheMan

17 — 11.06.14 — 10:20

(14) Так скинь нормальный код, ёлы-палы.

&НаСервере

Процедура ИзменитьИсточникФинансирования()                                                          

    ИсточникФин=»»;

    ТекПланТрудозатраты=»»;

    Запрос = Новый запрос;

    Запрос.Текст=»ВЫБРАТЬ

                 |    ВложенныйЗапрос.Значение,

                 |    Проекты.ТекущийПланТрудозатраты

                 |ИЗ

                 |    Справочник.Проекты КАК Проекты

                 |        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ

                 |            ПроектыДополнительныеРеквизиты.Значение КАК Значение,

                 |            ПроектыДополнительныеРеквизиты.Ссылка КАК Ссылка

                 |        ИЗ

                 |            Справочник.Проекты.ДополнительныеРеквизиты КАК ПроектыДополнительныеРеквизиты

                 |        ГДЕ

                 |            ПроектыДополнительныеРеквизиты.Свойство.Наименование = «»Источник финансирования»») КАК ВложенныйЗапрос

                 |        ПО Проекты.Ссылка = ВложенныйЗапрос.Ссылка

                 |ГДЕ

                 |    Проекты.Ссылка = &Ссылка»;

    Запрос.УстановитьПараметр(«Ссылка»,Объект.ПроектОснование);

    
    Выборка=Запрос.Выполнить();

    Результат=Выборка.Выбрать();

    
    Если Результат.Следующий() тогда

        
    Объект.ТекущийПланТрудозатраты=Результат.ТекущийПланТрудозатраты;

    
    ИсточникФин=Результат.Значение;

    КонецЕсли;

    
        Для каждого строка из Объект.ДополнительныеРеквизиты цикл          

            Если строка.Свойство.Наименование = «Источник финансирования» тогда

                
                Сообщить(«»+ строка.Значение+» «+Результат.Значение+»»);

                строка.Значение = ИсточникФин;

                                
            КонецЕсли;    

        Конеццикла;

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

&НаКлиенте

Процедура ПроектОснованиеПриИзменении(Элемент)                                  

    ИзменитьИсточникФинансирования();

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

   TheMan

18 — 11.06.14 — 10:33

Профи ну вы хде?))) Хелп плиз…

   TheMan

19 — 11.06.14 — 10:55

апп

   YF

20 — 11.06.14 — 10:58

А на форме дополнительные реквизиты как отображаются? Табличная чать показана?

   TheMan

21 — 11.06.14 — 11:02

А на форме дополнительные реквизиты как отображаются? Табличная чать показана?

Да показана…

   Timon1405

22 — 11.06.14 — 11:06

Тип(Объект) в отладчике в студию

   Fedor-1971

23 — 11.06.14 — 11:10

(21) Зайди в отладчик, поставь точку останова на строку:

Для каждого строка из Объект.ДополнительныеРеквизиты  цикл

и посмотри что есть в твоей «строка» сразу станет понятно что пытаешься сравнить и как нечто входящее в «строка» можно заполнять. Для интереса проделай сие НаКлиенте и НаСервере — прочувствуй разницу.

P.S. Последуй совету из (11).

   TheMan

24 — 11.06.14 — 11:12

   TheMan

25 — 11.06.14 — 11:16

(21) Зайди в отладчик, поставь точку останова на строку:

Для каждого строка из Объект.ДополнительныеРеквизиты  цикл

и посмотри что есть в твоей «строка» сразу станет понятно что пытаешься сравнить и как нечто входящее в «строка» можно заполнять. Для интереса проделай сие НаКлиенте и НаСервере — прочувствуй разницу.

P.S. Последуй совету из (11).

В строке все выходит что нужно…но не меняется на форме…

пишу Сообщить(«»+ строка.Значение+» «+Результат.Значение+»»);

строка.значение меняется, а на форме нет…

   hhhh

26 — 11.06.14 — 11:16

(21) а где РеквизитФормыВЗначение() ??Детский сад.

   TheMan

27 — 11.06.14 — 11:18

(21) а где РеквизитФормыВЗначение() ??Детский сад.

оп…а это куда надо?

   hhhh

28 — 11.06.14 — 11:18

(21)

ОбъектНаСервере = РеквизитФормыВЗначение(«Объект»);

  
        Для каждого строка из ОбъектНаСервере.ДополнительныеРеквизиты цикл          

            Если строка.Свойство.Наименование = «Источник финансирования» тогда

                
                Сообщить(«»+ строка.Значение+» «+Результат.Значение+»»);

                строка.Значение = ИсточникФин;

                                
            КонецЕсли;    

        Конеццикла;

    
ЗначениеВРеквизитФормы(ОбъектНаСервере, «Объект»);

   TheMan

29 — 11.06.14 — 11:19

Блин походу я туплю… прошу понять и простить))))

   TheMan

30 — 11.06.14 — 11:25

(28) Ничего не поменялось все тоже самое…

Оч странно строка значение поменялось а на форме без изменений

   salvator

31 — 11.06.14 — 11:27

(30) А записываешь где?

   TheMan

32 — 11.06.14 — 11:32

(31) при записи значение пишется не то которое в строка.значение а то которое на форме…

   TheMan

33 — 11.06.14 — 12:18

(31)

   TheMan

34 — 11.06.14 — 13:05

(33)

   TheMan

35 — 11.06.14 — 14:22

Задачка видимо оч сложная…

   Timon1405

36 — 11.06.14 — 14:26

Так попкорн у всех с утра закончился, все ушли за новым ведром

   TheMan

37 — 11.06.14 — 14:29

(36) Ну тады другое дело))))))

   Fedor-1971

38 — 11.06.14 — 14:32

(35)Шутник блин.

Есть открытая форма элемента справочника, у него есть ТЧ ДополнительныеРеквизиты (например А, Б и ИсточникФинансирования)

&НаСервере

Процедура ЗаполнитьТЧ(Источник)

Для каждого стр из Объект.ДополнительныеРеквизиты цикл

   Если стр.А=1 тогда

     стр.ИсточникФинансирования=Источник;

   КонецЕсли;

КонецЦикла;

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

Тебе уже сказали читай книги!

   Fedor-1971

39 — 11.06.14 — 14:35

(38)+ и не используй в названии переменных и ТЧ зарезервированные конструкции, потом сам моск вывихнеш пытаясь понять почему процедура что-то делает не так.

   TheMan

40 — 11.06.14 — 14:46

(38) ДА НЕ РАБОТАЕТ ТАК!!!! НЕ ИЗМЕНЯЮТСЯ ДАННЫЕ НА ФОРМЕ!!!!

   Fedor-1971

41 — 11.06.14 — 14:56

(40) ТЧ назови нормально, например, ДопДанные

100% работает и изменяется, проверено не один раз

Смотри отладчиком на стр — должен быть открывающийся список с реквизитами А, Б и ИсточникФинансирования.

Ты точно работаешь с управляемой формой?

   Timon1405

42 — 11.06.14 — 14:58

(40) точку останова на конеццикла и ответь на (22)

   TheMan

43 — 11.06.14 — 15:08

(41) Вот и мной было проверено не один раз…работало…

Только здесь по другому… строка.значение меняется…сообщить это показывает… а на форме результата 0.

   TheMan

44 — 11.06.14 — 15:14

(42)

Объект    ДанныеФормыСтруктура    ДанныеФормыСтруктура

АвтоматическиРассчитыватьПланПроекта    Истина    Булево

ВерсияДанных    «AAAAAAFgcFs=»    Строка

ВидПроекта    Общий    СправочникСсылка.ВидыПроектов

ГрафикРаботы        СправочникСсылка.ГрафикиРаботы

ГрифДоступа        СправочникСсылка.ГрифыДоступа

ДатаПоследнейЗагрузкиИзВнешнегоФайла    01.01.0001 0:00:00    Дата

ДополнительныеРеквизиты    ДанныеФормыКоллекция    ДанныеФормыКоллекция

ЕдиницаДлительностиЗадач    час    ПеречислениеСсылка.ЕдиницыДлительности

ЕдиницаТрудозатратЗадач    чел-час    ПеречислениеСсылка.ЕдиницыТрудозатрат

ЗагруженИзMSProject    Ложь    Булево

ЗадачаОснование        СправочникСсылка.ПроектныеЗадачи

Заказчик    Федеральное космическое агентство (Роскосмос)    СправочникСсылка.Корреспонденты

ЗапретитьАвтоматическоеДобавлениеУчастниковРабочейГруппы    Ложь    Булево

ИмяПредопределенныхДанных    «»    Строка

Код    «00000000221»    Строка

Комментарий    » »    Строка

Наименование    «ОКР «Элинвар»»    Строка

Описание    «»»г/к от 17.04.2014 №783-К694/13/146

ОКР «»Разработка технологии создания унифицированных интегральных модулей датчиков механических величин, в том числе работоспособных в экстремальных условиях эксплуатации с применением технологии ультрапрецизионной мехобработки и прецизионной электроэрозионной обработки труднообрабатываемых инварных и элинварных сплавов на ультрапрецизионных станках с числовым программным управлением, технологии нанообразивного шлифования и полирования прецизионных деталей чувствительных элементов датчиков, с использованием технологии лазерной размерной обработки и модифицирования поверхности»», (шифр ОКР «»Элинвар»»)»»»    Строка

Организация        СправочникСсылка.Организации

ПометкаУдаления    Ложь    Булево

Предопределенный    Ложь    Булево

ПроектОснование    1тестирование    СправочникСсылка.Проекты

ПроектнаяКоманда    ДанныеФормыКоллекция    ДанныеФормыКоллекция

РедактируетсяВСтороннейСистеме    Ложь    Булево

Родитель    1ОКР тест    СправочникСсылка.Проекты

Руководитель    ннова Налья Владимировна (Ведущий инженер-программист)    СправочникСсылка.Пользователи

Состояние    Инициирован    ПеречислениеСсылка.СостоянияПроектов

СписыватьЗатратыНаПроект    Истина    Булево

СпособПланирования    От даты начала проекта    ПеречислениеСсылка.СпособыПланированияПроекта

Ссылка    ОКР «Элинвар»    СправочникСсылка.Проекты

СсылкаНаВнешнийФайл    «»    Строка

ТекущийПланНачало    01.01.2014 0:00:00    Дата

ТекущийПланОкончание    31.12.2014 0:00:59    Дата

ТекущийПланТрудозатраты    555    Число

УдалитьАвтоматическиВестиРабочуюГруппу    Ложь    Булево

Утвержден    Истина    Булево

ЭтоГруппа    Ложь    Булево

   TheMan

45 — 11.06.14 — 15:14

типа это?

  

Timon1405

46 — 11.06.14 — 15:21

(44) зрителям с попкорном достаточно первой строчки

Сегодня хочу рассказать о том как можно изменить табличную часть документа в 1С. Когда у меня не было опыта в программирования, и передо мной стояла подобная задача. Я обратился за помощью к интернету и очень сильно удивился, когда не нашел ответа на свой вопрос. В принципе было очень мало сайтов, на которых бы люди что-то рассказывали и объясняли. В основном это форумы, на которых новичку найти ответ очень сложно. Так как все отвечают очень кратко и в общих чертах. Остальная часть сайтов предлагала пройти курсы. Сегодня, хочу вам рассказать об одном способе, с помощью которого можно изменить табличную част документа.

А если быть точней то изменить дату у записей в табличной части, но по аналогии можно изменить все что угодно.

Как изменить дату в ТЧ у всех записей

И так допустим у на есть какой-то документ, у него есть табличная часть, в которой нужно что-то изменить, например, установить одну и туже дату, которую пользователь сам укажет.

Изменение ТЧ

Для этого нужно открываем конфиггуратор, найти документ, создать в нем команду «Изменить дату», открыть свойства данного элемента и перейти а Действие.

Как изменить данные в табличной части документа в 1С

В открывшемся модуле пишем следующий код.

&НаКлиенте
Процедура ИзменитьДату(Команда)
УстановкаДаты = "";
Результат = ВвестиДату(УстановкаДаты, "Введите дату", ЧастиДаты.Дата);   
Для Каждого ДанныеСтроки Из Объект.Работы Цикл
    ДанныеСтроки.Дата =  УстановкаДаты;
КонецЦикла;
КонецПроцедуры

УстановкаДаты = «»; — задаем пустое значение для переменной в которой будет храниться дата.

Результат = ВвестиДату(УстановкаДаты, «Введите дату», ЧастиДаты.Дата); — открываем форму ввода даты и сохраняем её в переменную УстановкаДаты.

И в цикле перебираем строки и записываем дату.

Как изменить дату в ТЧ у всех записей

Сохраняем и запускаем программу. Открываем документ в который вносили изменения, теперь на форме появилась кнопка «Изменить дату», которая открывает окно в котором можно выбрать дату.

Как изменить дату в табличной части

После выполнения данной команды, выбранная дата установиться для всех записей табличной части документа.

1С 8.3 Как изменить данные в табличной части документа

Если немного подправить данный код можно поменять любое значение в табличной части документа.

Если возникли трудности то пишите в комментариях обязательно помогу.

Групповая обработка справочников и документов это очень удобный инструмент платформы 1С, предназначенный для массового изменения реквизитов (в том числе дополнительных) в документах, справочниках а также их табличных частях.

Групповое изменение реквизитов в списках документов и списках справочников

Перед тем как искать групповую обработку справочников и и документов, предлагаю вам воспользоваться возможностью редактировать реквизиты документов и справочников которая появилась только в 1С 8.3 на управляемых формах и есть сейчас в большинстве типовых конфигураций.

Заключается она в том, что вы можете находясь прямо в списке документов или списке справочника выделить нужные элементы зажав кнопку «Shift» или «Ctrl» и щелкая по ним мышью. А затем нажать на правую кнопку мыши и в выпавшем меню нажать «Изменить выделенные».

В открывшемся окне вы можете менять реквизиты, проводить, отменять проведение, помечать на удаление. Если этих возможностей для вас недостаточно, если нужен гибкий отбор элементов или просто их очень много, тогда уже лучше воспользоваться групповой обработкой справочников и документов.

Например в конфигурациях УТ 11 и Бухгалтерия 3.0 она находится в меню НСИ и Администрирование/ Обслуживание/ Корректировка данных/ Групповое изменение реквизитов.

Администрирование

Меню Администрирование

Т.е. по сути данная обработка в 1C 8.3 называется «Групповое изменение реквизитов».

Обслуживание

Меню Обслуживание

Как поменять реквизит сразу в нескольких элементах справочника/документах?

Рассмотрим на реальном примере. Смена ставки НДС. Не так давно всем кто использовал ставку НДС 18 % пришлось менять ее на 20 %. У тех кто установил последние обновления, смена ставки произошла автоматически, но не все устанавливают обновления. Ставка НДС в большинстве конфигураций указывается в карточке номенклатуры, т.е. ставка НДС это реквизит справочника номенклатуры, а значит чтобы ее заменить мы можем воспользоваться групповой обработкой. Что нам для этого нужно сделать:

  1. Открываем обработку и указываем в ней, что мы хотим менять справочник номенклатура

    Выбор элементов для изменения

    Выбор справочника

  2. Задаем отбор для элементов которые мы будем менять. Для этого нужно нажать на ссылку «Все элементы», после чего вам откроется окно в котором можно задать параметры отбора. В нашем случае, это все элементы номенклатуры в которых ставка НДС 18 %. Добавим это условие по кнопке «Добавить условие отбора». И нажмем ОК для того чтобы этот отбор применился.

    Отбор

    Условия отбора

  3. Далее нам нужно задать на что мы собираемся поменять данный реквизит. Ищем в таблице реквизитов нужный реквизит, в нашем примере — Ставка НДС. И задаем его новое значение — 20 %.

    Значение реквизита

    Новое значение реквизита

  4. Теперь нам осталось только нажать на кнопку «Изменить реквизиты» и дождаться завершения работы обработки. После чего мы увидим вот такую надпись.

    Реквизиты изменены

    Окончание работы обработки

    Готово, реквизиты изменены. Обработка сэкономила нам кучу времени. Только представьте себе сколько времени вы бы вручную меняли 195 элементов:)

Как поменять (заполнить) значения дополнительного реквизита справочника/документа?

Точно также как и с обычными реквизитами. Рассмотрим на примере. Допустим мы создали дополнительный реквизит «Категория» для номенклатуры. Категория может быть «Стандарт» либо «Расширенный». Реквизит изначально у нас пустой во всей номенклатуре, как же нам быстро его проставить для всех элементов?

  1. Открываем групповую обработку и задаем отбор, который позволит нам вычленить те элементы, для которых мы хотим установить значение доп. реквизита «Стандарт», допустим такие:

    Отбор

    Условия отбора

  2. Далее ищем в списке наш дополнительный реквизит и задаем ему нужное значение:

    Новое значение

    Новое значение доп. реквизита

  3. Далее проделываем то же самое для заполнения дополнительного реквизита в номенклатуре следующей категории.

Готово — вы проставили значения дополнительных реквизитов во всей номенклатуре и не потратили много времени.

Как поменять реквизит в табличной части документа/справочника?

Рассмотрим также на примере — допустим вы что-то перепутали и в течение длительного времени выбирали не ту номенклатуру в документах, как теперь это исправить? Это также можно сделать при помощи групповой обработки. Если вы хотите менять реквизиты в документах или их табличных частях — сначала нужно отменить проведение этих документов, иначе сменить реквизит не удастся.

  1. Открываем обработку. Выбираем тип документов в которых вы хотите поменять номенклатуру. Мы выберем Реализации. После чего рядом с вкладкой реквизиты появятся также и вкладки с табличными частями, которые есть в данных документах.

    Выбор документов

    Выбор типа документов для изменения

  2. Далее мы задаем отбор — отобрать все реализации — где в табличной части Товары наша ошибочно выбранная номенклатура:

    Отбор

    Отбор для табличной части

  3. Нажимаем ОК и на вкладке «Товары» задаем ту номенклатуру на которую нужно заменить.

    Новый реквизит

    Новый реквизит табличной части

  4. Нажимаем «Изменить реквизиты» и дожидаемся окончания работы обработки.
  5. Проводим документы.

Готово — мы поменяли реквизит в табличной части документа и сделали все это автоматически! Если вы хотите узнать какие еще есть обработки, которые могут облегчить вам жизнь, записывайтесь на мой онлайн курс — «Сам себе Программист 1С»).

Казалось бы, простая задача – изменить данные в определённой строке табличной части документа или справочника.

Получаем объект, табличную часть которого надо изменить. Используем метод ПолучитьОбъект().

Итак, у нас есть табличная часть и есть метод Найти(), который возвращает строку табличной части. Однако при попытке присвоить полю найденной строки какого-либо значения, система выдаёт ошибку.

Выход: изменять строки табличной части в цикле.

Допустим, табличная часть называется «Товары». Она имеет две колонки: «Номенклатура» и «Артикул».

Обходим строки табличной части в цикле и изменяем то, что нам нужно.

Для Каждого СтрокаТабличнойЧасти Из Товары Цикл

	Если СтрокаТабличнойЧасти.Артикул = "0001" Тогда
	
		СтрокаТабличнойЧасти.Артикул = "0123";
		
	КонецЕсли;
	
КонецЦикла; 
Информация о материале
Категория: Программирование 1С

Опубликовано: 20 апреля 2016

eugene1986

0 / 0 / 0

Регистрация: 03.03.2011

Сообщений: 7

1

Как изменить реквизиты табличной части документа?

03.03.2011, 15:11. Показов 10818. Ответов 11

Метки нет (Все метки)


Здравствуйте.
Подскажите как изменить реквизит табличной части документа (у каждой строки отдельная) из модуля документа (при нажатии на кнопку на форме)?
Я пытаюсь так:

1C
1
2
3
4
5
6
ТовИБ2=ИБ2.CreateObject("Справочник.Товары");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
    ТовИБ2.НайтиПоКоду(Код);
    ОсФ=ИБ2.ОстатокТовараНаСкладе(ТовИБ2, ИБ2.ОсновнойСклад);
КонецЦикла;

Но данный код заполняет реквизит всех строк одним числом (последним полученным).



0



fimbulwinter

308 / 308 / 1

Регистрация: 16.01.2011

Сообщений: 1,073

03.03.2011, 16:52

2

ОсновнойСклад — Реквизит шапки документа

1C
1
2
3
Процедура ТоварПриИзменении()
    Количество = ОстатокТовараНаСкладе(Товар, ОсновнойСклад);
КонецПроцедуры

Миниатюры

Как изменить реквизиты табличной части документа?
 



0



0 / 0 / 0

Регистрация: 03.03.2011

Сообщений: 7

03.03.2011, 17:18

 [ТС]

3

Да, так тоже можно, но нужно заполнение при нажатии кнопки!



0



fimbulwinter

308 / 308 / 1

Регистрация: 16.01.2011

Сообщений: 1,073

03.03.2011, 19:40

4

т.е. нужно заполнение всей таблицы остатками?
тогда в чем проблем то?

1C
1
2
3
4
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Количество=ОстатокТовараНаСкладе(Товар, ОсновнойСклад);
КонецЦикла;



0



0 / 0 / 0

Регистрация: 03.03.2011

Сообщений: 7

04.03.2011, 08:56

 [ТС]

5

Проблема в том что реквизит «ОсФ» всех строк табличной части заполняется одним числом (последним полученным).

Миниатюры

Как изменить реквизиты табличной части документа?
 



0



308 / 308 / 1

Регистрация: 16.01.2011

Сообщений: 1,073

04.03.2011, 09:34

6

информативно..
что есть осф?
как он расчитывается в ОстатокТовараНаСкладе()?



0



eugene1986

0 / 0 / 0

Регистрация: 03.03.2011

Сообщений: 7

04.03.2011, 11:36

 [ТС]

7

ОсФ — это реквизит табличной части, ОстатокТовараНаСкладе — функция в другой информационной базе, к которой я подключаюсь через OLE. Когда прохожу в отладчик по этому коду, то все высчитывает правильно, но в форме получается результат показанный на скриншоте

1C
1
2
3
4
5
6
ТовИБ2=ИБ2.CreateObject("Справочник.Товары");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
ТовИБ2.НайтиПоКоду(Код);
ОсФ=ИБ2.ОстатокТовараНаСкладе(ТовИБ2, ИБ2.ОсновнойСклад);
КонецЦикла;



0



308 / 308 / 1

Регистрация: 16.01.2011

Сообщений: 1,073

04.03.2011, 14:25

8

код ОстатокТовараНаСкладе() в студию



0



0 / 0 / 0

Регистрация: 03.03.2011

Сообщений: 7

05.03.2011, 11:41

 [ТС]

9

код ОстатокТовараНаСкладе() приводить тут бессмысленно, т.к. данная функция находится в другой базе и изменить ее я не смогу.



0



308 / 308 / 1

Регистрация: 16.01.2011

Сообщений: 1,073

05.03.2011, 11:50

10

чудес не бывает
если базы идентичны, передавай в ОстатокТовараНаСкладе() коды номенклатуры и склада
в самой процедуре ОстатокТовараНаСкладе() ищи по кодам элементы справочников и получай остатки



0



0 / 0 / 0

Регистрация: 03.03.2011

Сообщений: 7

05.03.2011, 13:07

 [ТС]

11

Я так и делаю, но в табличной части документа результаты оказываются не те.



0



fimbulwinter

308 / 308 / 1

Регистрация: 16.01.2011

Сообщений: 1,073

05.03.2011, 15:59

12

не совсем понятно что здесь ОсновнойСклад. В форме этого реквизита нет, поэтому смею предположить что это какое то место хранение в другой базе =>

1C
1
2
3
4
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
ОсФ=ИБ2.ОстатокТовараНаСкладе(Товар.Код);
КонецЦикла;

в другой базе

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Функция ОстатокТовараНаСкладе(КодТовара) Экспорт
Товар = СоздатьОБъект("Справочник.Номенклатура");
Склад = СоздатьОбъект("Справочник.МестаХранения");
Если Товар.НайтиПоКоду(КодТовара)  = 1 Тогда
 Товар.ТекущийЭлемент();
Иначе 
 Возврат 0;
КонецЕсли;
 
Склад.НайтиПоКоду("00001"); // Это какой то там склад
 
////// Здесь уже получаешь остатки
 
Возврат <КоличествоКонечныйОстаток>;
 
КонецФункции



0



Содержание:

1.   Изменения в табличной части Товары

Достаточно часто возникает ситуация, когда появляется потребность внести изменения в табличную часть Товары документов Заказ клиента и документа Реализация товаров и услуг:

·         добавить товары из других документов

·         изменить цены на процент

·         установить тип цены по виду цен

·         установить новую ставку НДС

·         установить размер скидки

Обработка «Обработка табличной части Товары» в 1С 8 Управление торговлей 11 предназначена для внесения изменений в табличную часть документов Заказ клиента и Реализация товаров и услуг.

Документ Заказ клиента в 1С 8 УТ 11   

2.   Использование Обработки табличной части Товары

При нажатии соответствующей кнопки Изменить в табличной части документов обработка открывает окно заполнения табличной части документа, установка «галочки» позволяет выбирать отдельные строки. Содержит следующие возможности:

Обработка табличной части Товары

·         «Добавить из документа» (из любого документа в 1С 8 УТ 11, содержащего в табличной части номенклатуру). Позволяет выбрать тип документа, затем открывает журнал этих документов. Добавляет строки с номенклатурой из выбранных документов (с сохранением цен, скидок и остальных данных) в окно к исходной номенклатуре, где затем можно выбрать нужные строки и перенести их в исходный документ.

Выбор типа документа в 1С 8 УТ 11

Номенклатура из выбранных документов в окне с исходной номенклатурой в 1С 8 УТ 11

·         «Изменить цены на %»

Установка % ставки в 1С 8 УТ 11


 

Изменение цены на % в колонке «Цена» в 1С 8 УТ 11

·         «Установить цены по типу» (в соответствии с заданными видами цен)

Установка цены по Виду цен в 1С 8 УТ 11

Установить тип цен в одноименной колонке, с заполнением соответствующей цены по товару, в колонке «Цена»

Вид цены в 1С 8 УТ 11

·         «Установить ставку НДС», выбрав ее из соответствующего справочника для установленной Ставки НДС.

Установка ставки НДС в 1С 8 УТ 11

Установка выбранной Ставки НДС производится в одноименной колонке, с заполнением/пересчетом соответствующих сумм НДС по товару, в колонках «Сумма НДС» и «Сумма с НДС».

Ставка НДС в 1С 8 УТ 11

·         «Установить скидку»

Установка скидки в 1С 8 УТ 11

Установка указанного процента Скидки производится в колонке «% руч.» с заполнением/пересчетом соответствующей суммы, в колонке «Сумма руч.».

Установка процента скидки в 1С 8 УТ 11

Выполняется любое выбранное действие в 1С 8.3 УТ 11 после нажатия кнопки «Выполнить», только по выбранной номенклатуре, с установленным признаком в колонке Пометка.

При повторном нажатии кнопки «Выполнить», строчки не задваиваются, а суммируется количество, по заданной/указанной обработке, на каждый последующий клик.

Сохраняем табличную часть при изменении и можем закрывать обработку в 1С 8.3 Управление торговлей 11 и переносить в документ отредактированную табличную часть нажатием кнопки «ОК».

Специалист компании «Кодерлайн»

Владимир Бахтин

Понравилась статья? Поделить с друзьями:
  • Как открыть логистическую компанию в казахстане
  • Как изменить реквизиты налогоплательщика в сбис
  • Как открыть магазин морепродуктов с нуля бизнес
  • Как изначально называлась обувная компания nike
  • Как открыть магазин стройматериалов бизнес план